如何成功输出一个函数调用?

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 和它本身以外的因子。