素數II題解(素數篩)

2021-10-16 12:19:16 字數 1042 閱讀 7960

走進世博園某資訊通訊館,參觀者將獲得前所未有的尖端互動體驗,一場充滿創想和喜悅的資訊通訊互動體驗秀將以全新形式呈現,從觀眾踏入展館的第一步起,就將與手持終端密不可分,人類未來夢想的驚喜從參觀者的掌上展開。

在等候區的夢想花園中,參觀者便開始了他們奇妙的體驗之旅,等待中的遊客可利用手機等終端參與互動小遊戲,與夢想劇場內的虛擬人物kr. kong 進行猜數比賽。當螢幕出現乙個整數x時,若你能比kr. kong更快的發出最接近它的素數答案,你將會獲得乙個意想不到的禮物。

例如:當螢幕出現22時,你的回答應是23;當螢幕出現8時,你的回答應是7;若x本身是素數,則回答x;若最接近x的素數有兩個時,則回答大於它的素數。

第一行,乙個正整數 n,表示要競猜的整數個數;

接下來的 n 行,每行乙個正整數 x。

輸出有 n 行,每行乙個整數,表示與對應 x 的最接近它的素數。

樣例輸入
4225

188

樣例輸出

素數篩處理出1e7內的所有素數,對篩出的素數進行處理,發現1e7內相鄰2個素數之間的間隔不會超過200。若n是素數則輸出本身,若n不是素數則向上下兩個方向尋找,找到素數就直接輸出。

#include

#pragma gcc optimize(2)

#define ll long long

using

namespace std;

int _,n,f[

10000010];

intmain()

elseif(

!f[n-i]

&&n-i>=2)

}else

for(

int i=

1;i<=

1000

;i+=2)

elseif(

!f[n-i]

&&n-i>=2)

}}return0;

}

素數篩法(素數篩 線性篩)

求素數的方法在現階段可以總結為三種 這種方法最為簡單但效率太低,經過優化時間複雜度最低是o n sqrt n 輸入乙個n,輸出n以內所有素數 include intprime int n if flag 0 優化 printf d i intmain 素數篩法原理 2是素數,那麼2的所有倍數都是合數...

素數判定,素數篩

這些零碎的知識點每個都學過n次了,但隔一段時間就會忘,記錄下來 素數定義 只能被自身和1整除的大於1的正整數 通過這個定義,我們就可以得出判斷素數的 這裡用到了cmath中的sqrt函式,其原型為double sqrt double 所以在取上界的時候,為了避免double帶來的精度丟失,寧可多列舉...

素數與素數篩

素數篩法 線性篩法 啊,耳熟能詳。素數又稱質數,乙個大於1 11的自然數,除了1 11和它本身外,不能被其他自然數整除,換句話說就是該數除了1 11和它本身以外不再有其他的因數 否則稱為合數。啊!1 11不是素數啊 啊,也耳熟能詳了,暴力列舉一下除1 11和本身的自然數是否會被整除。bool is ...