輸出n以內的所有素數

題目描述

用簡單素數篩選法求N以內的素數。

輸入

N

輸出

2~N的素數

樣例輸入

100

樣例輸出

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

解題:這道題明白了素數的定義之後就不難,素數的定義是,大於1的自然數,除了1和它本身,不能被其他自然數整除的數。換句話說就是該數除了1和它本身沒有其他因數,相反的,能被其他自然數整除的就是非素數。知道了這個之後,你會想到,又是關於因數的問題,應該又要用循環控制,然後一個一個驗證,最後輸出。值得注意的是,題目要求讓你輸出的是素數,可是你只知道用循環控制,該數對其他數求餘的結果是0得到的結果是非素數,這時候你能能會想到該數被其他數整除不等於0就是素數了,非也,我這樣試過,結果是不對的。展開來說,因爲素數的判斷條件很嚴格,是一個因數都不能有,而非素數只要有一個因數就行,總共有幾個不管。所以在這種問題下(你只知道跟你求的結果的相反的條件時),我們就應該想到要用一個flag標識,把你知道條件的結果都標識上,那麼爲標識的剩下的就可以輸出了。

源代碼:

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
       {   int flag=0;//
        for(int j=2;j<i;j++)
        {
            if(i%j==0)
            {
             flag=1;
             break;  //注意這裏只要有一個能被它整除的數就應該退出循環
            }
        }
        if(flag==0)
        printf("%d\n",i);    
    }
 } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章