判断一个数是否为素数

代码里的i>=n没有看懂,如果我输入一个数为5,5%2==1,但是2<5,那么5就不是素数了吗?

img

判断一个数是否是素数,排除1和数字n本身开始查找,所以从i=2开始一直到i<n都没找到因子,也就是 if(n%i==0)break;这句未被执行到,此时循环结束,i = 5,所以if(i>=n)条件满足,输出 素数。

确实这个写法不太好,你看看这个写法:

#include <stdio.h>
#include <math.h> 
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    if(n<2) 
    {
        printf("%d不是质数",n);
        return 0;
    }
    for(int i=2;i<=sqrt(n);i++)
    {
        if(n%i==0) 
        {
            printf("%d不是质数",n);
            return 0;
        }
    }
    printf("%d是质数",n);
}