【題解】篩選N以內的素數

題目描述:
用簡單素數篩選法求N以內的素數。

輸入:
N

輸出
2~N 的素數

樣例輸入
30

樣例輸出
2
3
5
7
11
13
17
19
23
29

題解:
首先先解釋一下素數是什麼?
素數一般指質數,質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。
在一般領域,對正整數n,如果用2到n的開方之間的所有整數去除,均無法整除,則n爲質數。
質數大於等於2,不能被它本身和1以外的數整除。
注意,1從嚴格意義上來說不能算做是質數。

舉個例子,你要去旅館租房間,而每個房間是不同的單價,我們採取的策略是手裏不能有剩錢。並且只能租同一類的房子,並且要儘可能的租到最多的房子。
這裏有這幾款房間:2、3、4·····n塊一間。
當你有10塊的時候,最優的選擇就是租“2塊”這款房間,因爲可以租到5間。如果能租到一間以上的數,那麼這個數就是合數。
但你有11塊的時候,最優的選擇只有租“11塊”這款房間,但是隻能租到一間。那麼這個數就是素數。

代碼:


#include <stdio.h>
#include <stdlib.h>

int main(){
    //接收數據
    int n, judge;
    scanf("%d", &n);    //接收輸入

    for(int i = 2; i <= n; i++){    //外循環,循環2~n的每一個數
        judge = 1;  //judge = 1時,代表這個數是素數

        //內循環,用來循環2~n 的開方之間的每一個數
        for(int j = 2; j * j <= i; j++){
            if(i % j == 0){ //判斷i 是否有其他的因數
                judge = 0;  //如果有的話,條件爲假,退出內循環
                break;
            }
        }
        //如果judge 依舊爲1的話,代表i是素數
        if(judge) printf("%d\n", i);
    }


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