关于求解素数的疑问
#include "stdio.h"main()
{ int i,j;
int p;
printf("the sushu:\n");
for(i=1;i<=100;i++)
{for(p=1,j=2;j<=i/2;j++)
if(i%j==0){p=0;break;}
if(p==1)printf("%8d",i);
}
printf("\n");
getch();
}
此题求的是1到100的素数,这个程序也可运行。
我不明白的是:对于红色字体的j<=i/2,当我把它改成j<=i时,程序的运行结果是错的。
我个人的理解是,当为j<=i时,只是多了一些无意义的循环而已,不会对结果产生影响。
难道求素数的条件只能是j<=i/2或j<=sqrt(i)吗?