你这当然是错了 因为找到因数说明它不是素数 但找到的那个不是因数并不代表它就是素数了 所以不能对于i的每个值都输出一次。而且要特殊判断的不是2而是1。
bool prime=true;
if (n==1) prime=false;
else for (i=2;i<=int(sqrt(n));i++)
if (n%i==0) {prime=false;break;}
if (prime) printf("%d是素数",n);else printf("%d不是素数",n);
#include "stdafx.h"
#include "math.h"
int main()
{
int n,i;
printf("请输入一个数");
scanf("%d",&n);
if((n==2)) printf("%d是素数",n);
else
{
for(i=2;i<=sqrt(n);i++)
{
if(n%i==0)
{
printf("%d不是素数",n);
break;
}
}
if(i>=sqrt(n) printf("%d是素数",n);
}
return 0;
}
改成这样:
#include "stdafx.h"
#include "math.h"
int main(int argc, char* argv[])
{
int n,i;
printf("请输入一个数");
scanf("%d",&n);
if(n==2)
printf("%d是素数",n);
else
{
for(i=2;i
if(n%i==0)
{
printf("%d不是素数",n);
break;
}
}
printf("%d是素数",n);
}
return 0;
}