C语言 如何成功输出函数调用



我的任务是检查一个数字是否是素数,但我必须使用三个部分来做到这一点。第一个是代码的主体,后面是两个函数。第一个检查数字是否为偶数,第二个检查它是否为素数。我知道这是一种相当乏味的方法来检查数字是否是素数,但它的目的是让我们了解函数和函数调用!

更新

除了打印非素数的最小除数之外,我已经完成了所有工作。我以为使用第二个函数中的 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 primen", num);
        }
        else if (resultPrime == 1) {
            printf("%d is the smallest divisor of %d. Number not primen", 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) iff 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,可以简单地删除并且您的好

更新:

//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;
} 

您的函数调用是正确的,但您需要一个分号 (;)在以下结尾:

结果偶数 = 偶数(数)

否则,该程序会有效地检查均匀度。检查素数的一种方法是确保数字除了 1 和自身之外没有其他因素。这是通过使用 for 循环查找每个整数的div 来完成的,从被测试数字的 2 到一半。如果一个数字产生div 为 0,那么它不是素数,因为 t 有一个除 1 和本身以外的因子。

最新更新