题目:输入一个整数n,输出0~n之间的所以素数(每个占一行)
解题思路:会用到取余符号%,以为我们要用余数来作判断!
假如i是素数,则i不能整除2~i之间的所有数,定义一个变量j,取 2~i之间所有值。如果中间的数都不能除尽,
那么一起循环到最后一次j变成i时,i%j==i%i==0 这个时候i==j ,i就一定是素数。如果在j=0~i的循环中途
就出现i%j==0,说明i一定不是素数.
1 #include <stdio.h> 2 int main() 3 { 4 int N,i,j; 5 scanf("%d",&N); 6 for(i=2; i<=N; i++) //遍历2~N之间的所有数 7 { 8 for(j=2; j<=i; j++) //j相当于0~i之间的所有数,i%如果除0~i之间的所有数都都不能除尽,那么i是素数。 9 { //i%j==0说明i能整除j 当i和j相等时,那么i%j必须为0 10 if(i%j==0&&i!=j) //如果j不是在最后一个i=j的情况下i%j==0,说明在j在取0~i的某个值时,i能将其整除,因此i肯定不是素数。 11 break; 12 if(i%j==0&&i==j) //说明i%(0~i之间)都不能除尽,只有最后i==j的情况下才能除尽,此时已经把所有数都判断完了,i是素数 13 printf("%d\n",i); 14 } 15 } 16 return 0; 17 }