1. 程式人生 > >輸出100以內的素數

輸出100以內的素數

···輸出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; }