輸出100以內的素數
阿新 • • 發佈:2019-01-01
···輸出100以內素數的關鍵是明白素數的概念:只能被自身或1整除的數叫素數。0和1都不是素數。
···應該想到用for迴圈,既然0,1不是素數,那迴圈就應從2開始,到100。
···要判斷能不能整除其他數,就應該想到用迴圈巢狀,在一層for迴圈的基 礎上去對比它小的數取餘(注意應從2開始)。
···其次,考慮用什麼方法記錄素數。因為只有素數和非素數,於是用1和0來標記素數和非素數。
···最後,在一層迴圈內輸出標記為1的所有數。
···如果j的for用j<=i/2,注意一定是<=,下面的if條件也要改為(j>i)。(i如果不是素數,就一定能寫成a*b的形式,a、b中一定有一個數是小於i/2的)
#include<stdio.h>
int main(void){
int i;
for(i=2;i<=100;i++){
int isPrime = 1;
int j;
for(j=2;j<i;j++){ //(j)
if(i%j==0){
isPrime = 0;
break;
}
}
/*(另外一種判斷方法)break跳到這裡,j++到頭也來到這裡,但只有j++到頭得到的才是素數,所以要進行判斷:
if (j==i){
printf("%d ",i);
}
*/
if(isPrime==1){
printf("%d ",i);
}
}
return 0;
}
當然程式碼可以優化,使得效率更高。
#include<stdio.h>
#include<math.h> //數學庫函式
int main(void)
{
int i = 0;
for(i=3; i<=100; i+=2){ //只判斷奇數
int j = 0;
for (j=2; j<sqrt(i); j++){ //小於根號下i
if(i%j==0)
break;
}
if(j>sqrt(i))
printf("%d ",i);
}
return 0;
}