題目1163 素數

2021-06-17 18:33:35 字數 1207 閱讀 6998

題目描述:輸入乙個整數n(2<=n<=10000),要求輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數,如果沒有則輸出-1。

輸入:輸入有多組資料。

每組一行,輸入n。

輸出:輸出所有從1到這個整數之間(不包括1和這個整數)個位為1的素數(素數之間用空格隔開,最後乙個素數後面沒有空格),如果沒有則輸出-1。

樣例輸入:

100

樣例輸出:

11 31 41 61 71

**:

#include bool s[10001];

int ans[10000];

void init()

}int main() {

int n,i;

init();

while(scanf("%d",&n)!=eof) {

bool first = true;

for(i=2;i

太高,不具有技巧性。

本題採用了一種更為優雅的方法。

若乙個數不是素數,則必存在乙個小於它的素數是它的因數。假如我們已經獲得小於某乙個數的所有素數,我們

只需確定該數不能被這些素數整除,即可確定該數為素數。

當我們獲得乙個素數時,就把它所有的倍數標記為非素數,如果乙個數沒有被任何小於它的素數標記,則它為非

素數。

----------這個方法就稱為-----素數篩法。

1.定義init()函式,計算從0到10000內所有的素數,只需在main函式開始處執行一次即可。

2.注意不存在素數的要輸出-1

3.當判定i為素數時,標記其所有倍數時,我們並沒有從2*i開始,而是從i*i開始。因為對於i*k(k已經被標記過了。避免了重複的計算。

題目1163 素數

題目描述 輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入 輸入有多組資料。每組一行,輸入n。輸出 輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數 素數之間用空格隔開,最後乙個素數後面沒有空格 如果沒有則...

51 題目1163 素數

題目描述 輸入乙個整數n 2 n 10000 要求輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數,如果沒有則輸出 1。輸入 輸入有多組資料。每組一行,輸入n。輸出 輸出所有從1到這個整數之間 不包括1和這個整數 個位為1的素數 素數之間用空格隔開,最後乙個素數後面沒有空格 如果沒有則...

九度題目1163素數

include include int prime 10001 bool mark 10001 int size bool judge int x return true int cunsushu size 0 for i 2 i 10000 i else return 0 int main els...