素數篩選法杭電2136

2021-09-02 05:54:39 字數 491 閱讀 2991

#include

#include

using namespace std;

#define maxn 1000000

int a[maxn];

int main()}}

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

}打表法輸出素數

#include

#include

using namespace std;

#define maxn 1000

int a[maxn],pri[maxn];

int main()

for(int j=2*i;j<=n;j=j+i)

}for(int i=0;i不能用普通的輸入乙個數在判斷,直接打表這樣效率高,從2開始標記,開始的時候把2標記成素數的第乙個位置,把2的倍數全都標記一遍,因為這些數字都不是素數,在把下乙個素數標記為第二個位置,再把3的倍數全都標記一遍,以此類推

提供了打表法

素數篩選法

篩選素數法 搞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...