題解 篩選N以內的素數

2021-10-05 07:56:32 字數 740 閱讀 5929

題目描述:

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

輸入:n

輸出2~n 的素數

樣例輸入

30樣例輸出23

571113

1719

2329

題解:首先先解釋一下素數是什麼?

素數一般指質數,質數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。

在一般領域,對正整數n,如果用2到n的開方之間的所有整數去除,均無法整除,則n為質數。

質數大於等於2,不能被它本身和1以外的數整除。

注意,1從嚴格意義上來說不能算做是質數。

舉個例子,你要去旅館租房間,而每個房間是不同的單價,我們採取的策略是手裡不能有剩錢。並且只能租同一類的房子,並且要盡可能的租到最多的房子。

這裡有這幾款房間:2、3、4·····n塊一間。

當你有10塊的時候,最優的選擇就是租「2塊」這款房間,因為可以租到5間。如果能租到一間以上的數,那麼這個數就是合數。

但你有11塊的時候,最優的選擇只有租「11塊」這款房間,但是只能租到一間。那麼這個數就是素數。

**:

#include

#include

intmain()

}//如果judge 依舊為1的話,代表i是素數

if(judge)

printf

("%d\n"

, i);}

return0;

};

O n 線性篩選n以內的素數

o n 線性篩選n以內的素數 1 對於任何乙個素數p,都不可能表示為兩個數的乘積 2 對於任何乙個合數m p1 a1p2 a2 pm am,這裡p1 p2 m,都能使用p1 a1 1p2 a2 pm am p1進行篩選 1 fillchar prime,sizeof prime 1 2 prime ...

篩選法求n以內素數(質數)

設定乙個標誌陣列isprime,isprime i 的值是1就表示i是素數。開始陣列元素值全部為1劃掉k的倍數,就是把isprime 2 k isprime 3 k 置成0最後檢查isprime陣列,輸出isprime i 為1的那些i include include using namespace...

使用篩選法求N以內的素數

1.使用篩選法求素數的思想是 使用乙個bool isprime n 來儲存乙個數是不是素數的標誌位。首先偶數不是素數 2除外 將2的倍數isprime全部設定為false。i從3開始遍歷,如果i為素數,則將i的倍數isprime全部設定成false。這樣就篩選掉了好多不是素數的數。從0遍歷ispri...