c语言:输入一个大于3的整数并判断其是否为素数

Python023

c语言:输入一个大于3的整数并判断其是否为素数,第1张

你的代码逻辑是错误的:素数是除1和自身外没有因数的正整数,你只 if(n%i!=0) { printf("%d是素数\n",n) } 这样一次判断就认为是素数了?比如8,8%3不等于0,但谁都知道8不是素数!谭浩强的代码显然是对的——for(i=2i<ni++)中的i<n是说要把n所有有可能的因子都试除一次,看看能不能整除,能则不是素数,用break结束循环(不是素数了就没有必要再往下循环了);而如果i>=n了才退出,就明没有找到能整除的因子,n就是素数。那么怎么知道这两种情况呢,下面if(i<n)...就解决了:i<n说明找到整除因子了提前退出的,n不是素数,而若i>=n了,这不就说明没找到能整除的因子,n是素数!

#include <stdio.h>

#include <math.h>

////判断是否为素数的函数

int isPrime(int n)

{

    int i=2

    while(i<=(int)sqrt(n))

    {

        if(n%i == 0)

            return 0  //不是素数,直接返回0

        else

            i++

    }

    return 1

}

int main()

{

int n

printf("输入一个大于等于3的正整数: ")

scanf("%d",&n)

if(isPrime(n))

printf("%d is a prime number\n",n)

else

printf("%d is not a prime number\n",n)

return 0

}

示例运行结果:

输入一个大于等于3的正整数: 7

7 is a prime number

输入一个大于等于3的正整数: 25

25 is not a prime number