解题思路:假如i是素数,则i不能整除2~i之间的所有数,定义一个变量j,取 2~i之间所有值。如果中间的数都不能除尽,
那么一起循环到最后一次j变成i时,i%j==i%i==0 这个时候i==j ,i就一定是素数。如果在j=0~i的循环中途
就出现i%j==0,说明i一定不是素数.
参考代码:#include
int main()
{
int N,i,j;
scanf("%d",&N);
for(i=2; i<=N; i++) //遍历2~N之间的所有数
{
for(j=2; j<=i; j++) //j相当于0~i之间的所有数,i%如果除0~i之间的所有数都都不能除尽,那么i是素数。
{ //i%j==0说明i能整除j 当i和j相等时,那么i%j必须为0
if(i%j==0&&i!=j) //如果j不是在最后一个i=j的情况下i%j==0,说明在j在取0~i的某个值时,i能将其整除,因此i肯定不是素数。
break;
if(i%j==0&&i==j) //说明i%(0~i之间)都不能除尽,只有最后i==j的情况下才能除尽,此时已经把所有数都判断完了,i是素数
printf("%d\n",i);
}
}
return 0;
}