如何成功输出一个函数调用?
How to successfully output a function call?
我的任务是检查一个数是否为质数,但我必须使用三个部分来完成它。第一个是代码主体,后面是两个函数。第一个检查数字是否为偶数,第二个检查它是否为素数。我知道这是一种相当乏味的检查数字是否为质数的方法,但它是为了让我们了解函数和函数调用!
更新
除了打印非素数的最小除数外,我已经完成了所有工作。我认为在第二个函数中使用 i 会起作用,但它不会输出。我已经通过下面的代码复制了--如果您有任何建议,请帮助!
#include <stdio.h>
#include <math.h>
int even (int);
int find_div (int);
int main() {
int num, resultEven, resultPrime, i;
printf("Enter a number that you think is a prime number (between 2 and 1000)> \n");
scanf("%d", &num);
while (num < 2 || num > 1000) {
if (num < 2) {
printf("Error: number too small. The smallest prime is 2.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else if (num > 1000) {
printf("Error: largest number accepted is 1000.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else {
}
}
resultEven = even(num);
resultPrime = find_div(num);
if (resultEven == 1) {
printf("2 is the smallest divisor of %d. Number not prime\n", num);
}
else if (resultPrime == 1) {
printf("%d is the smallest divisor of %d. Number not prime\n", i, num);
}
else {
printf("%d is a prime number.\n", num);
}
return 0;
}
int even(int num) {
if (num % 2 == 0) {
return 1;
}
else {
return 0;
}
}
int find_div(int num) {
int i;
for (i = 2; i <= (num/2); i++) {
if (num % i == 0) {
return 1;
}
if (num == i) {
return 0;
}
}
return i;
}
我要为威尔逊定理 (p-1) 创建一个函数! = 1 (mod p) 当且仅当 p 是质数,首先,为了使函数变得简单易用,您只需要一个。对于小于 1000 的数字,它应该可以正常工作。
类似,
//it will return 1 iff p is prime
int wilson(int p)
{
int i, result = 1;
for (i = 0; i < p; i++)
{
result *= i;
result = result % p;
}
return result;
}
但是,如果您不打印已包含的支票,请在文件顶部
#include <stdio.h>
你的
resultEven = even(num)
需要一个;最后但评论中提到了这一点,除了你的方法虽然奇怪是正确的,你也不需要 empy else,它可以简单地删除并且你的好
更新:
//if return value == 1 its prime, else not prime, and
//return value = smallest divisor
int findDiv(int p)
{
int i= 0;
for (; i <= n/2; i++)
{
//you number is a multiple of i
if (num % i == 0)
{
//this is your divisor
return num;
}
}
//1 is the largest divisor besides p itself/smallest/only other
return 1;
}
你的函数调用是正确的,但你需要在结尾处加一个分号 (;):
resultEven = even(num)
否则此程序会有效地检查均匀度。检查素数的一种方法是确保数字除了 1 和它本身之外没有其他因素。这是通过使用 for 循环找到从 2 到被测试数字的一半的每个整数的 div 来完成的。如果一个数字产生的 div 为 0 那么它不是素数,因为 t 有一个除 1 和它本身以外的因子。
我的任务是检查一个数是否为质数,但我必须使用三个部分来完成它。第一个是代码主体,后面是两个函数。第一个检查数字是否为偶数,第二个检查它是否为素数。我知道这是一种相当乏味的检查数字是否为质数的方法,但它是为了让我们了解函数和函数调用!
更新
除了打印非素数的最小除数外,我已经完成了所有工作。我认为在第二个函数中使用 i 会起作用,但它不会输出。我已经通过下面的代码复制了--如果您有任何建议,请帮助!
#include <stdio.h>
#include <math.h>
int even (int);
int find_div (int);
int main() {
int num, resultEven, resultPrime, i;
printf("Enter a number that you think is a prime number (between 2 and 1000)> \n");
scanf("%d", &num);
while (num < 2 || num > 1000) {
if (num < 2) {
printf("Error: number too small. The smallest prime is 2.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else if (num > 1000) {
printf("Error: largest number accepted is 1000.\n");
printf("Please reenter the number > \n");
scanf("%d", &num);
}
else {
}
}
resultEven = even(num);
resultPrime = find_div(num);
if (resultEven == 1) {
printf("2 is the smallest divisor of %d. Number not prime\n", num);
}
else if (resultPrime == 1) {
printf("%d is the smallest divisor of %d. Number not prime\n", i, num);
}
else {
printf("%d is a prime number.\n", num);
}
return 0;
}
int even(int num) {
if (num % 2 == 0) {
return 1;
}
else {
return 0;
}
}
int find_div(int num) {
int i;
for (i = 2; i <= (num/2); i++) {
if (num % i == 0) {
return 1;
}
if (num == i) {
return 0;
}
}
return i;
}
我要为威尔逊定理 (p-1) 创建一个函数! = 1 (mod p) 当且仅当 p 是质数,首先,为了使函数变得简单易用,您只需要一个。对于小于 1000 的数字,它应该可以正常工作。
类似,
//it will return 1 iff p is prime
int wilson(int p)
{
int i, result = 1;
for (i = 0; i < p; i++)
{
result *= i;
result = result % p;
}
return result;
}
但是,如果您不打印已包含的支票,请在文件顶部
#include <stdio.h>
你的
resultEven = even(num)
需要一个;最后但评论中提到了这一点,除了你的方法虽然奇怪是正确的,你也不需要 empy else,它可以简单地删除并且你的好
更新:
//if return value == 1 its prime, else not prime, and
//return value = smallest divisor
int findDiv(int p)
{
int i= 0;
for (; i <= n/2; i++)
{
//you number is a multiple of i
if (num % i == 0)
{
//this is your divisor
return num;
}
}
//1 is the largest divisor besides p itself/smallest/only other
return 1;
}
你的函数调用是正确的,但你需要在结尾处加一个分号 (;):
resultEven = even(num)
否则此程序会有效地检查均匀度。检查素数的一种方法是确保数字除了 1 和它本身之外没有其他因素。这是通过使用 for 循环找到从 2 到被测试数字的一半的每个整数的 div 来完成的。如果一个数字产生的 div 为 0 那么它不是素数,因为 t 有一个除 1 和它本身以外的因子。