素數對《篩選法求解》

2021-08-03 21:35:47 字數 677 閱讀 8874

time limit: 1 sec  memory limit: 128 mb

submit: 619  solved: 142 [

submit][

status][

web board]

輸入乙個正整數n,求有幾對素數x,y,滿足n=x+y((3,2)和(2,3)視為相同的素數對)。

有多組資料,每行輸入乙個偶整數n(3輸出相應的答案。

610120

121一拿到這個題,看見n的資料不大,就沒想太多,直接用樸素判斷質數的方法來求解,結果tle,所以還是嘗試著用了篩選法

所謂的篩選法,其實很容易理解,eg :2是質數,那麼我們就把2的所有的倍數,4,6,8,10.。。。都置為非質數,就是運用這種原理,可以篩選出從2到n(或者說0到n都一樣)所有的質數了

**如下:

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

int a[50005];

void isprame()

int main()

printf("%d\n",cou);

}return 0;

}

素數篩選法

篩選素數法 搞acm的都知道,素數是數論中必不可少的知識,也是必須要掌握的,關於素數的篩選有好幾種方法,下面一一道來,寫的不好還請提出。第一種是最常規的做法 int main if j sqrt i cout 這種方法肯定是比第一種快的,至於快多少大家可以比較一下,注意到裡面的for迴圈是到sqrt...

素數篩選法

素數篩選法差不多是打標,用前面確定的質數篩選掉後面的合數,然後遍歷下來所有的合數都被篩選掉了,剩下的都是素數。int vis maxn for int i 2 i n i for int j i 2 j n j i vis j 1 這是沒有優化的素數篩選法,也已經很快了,時間複雜度是n log n。...

素數篩選法

素數,是指因子只包含1和其本身的數,那麼,我們怎麼判斷素數呢?以下 均基於打表 1 1e6 的基礎上完成 素數的定義就是乙個數的因子只包含1和其本身,那麼我們直接就按照定義寫 include include define maxn 1000000 10 int pri maxn int isprim...