代码里的i>=n没有看懂,如果我输入一个数为5,5%2==1,但是2<5,那么5就不是素数了吗?
判断一个数是否是素数,排除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);
}