題目:輸入一個整數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 }