求質數表 素數篩求素數 效率比較 數論相關

2021-06-06 17:39:30 字數 563 閱讀 9831

**:求質數表 素數篩求素數 效率比較 數論相關

第乙個是平時最常用的基本寫法(還有一種寫法是for(j=i*2;j第二個是以i*i為起點開始篩的,要注意浮點溢位!

第三個不太好簡潔地說清楚,詳細

程式中途分別輸出每次計算了的prime[500000],從而為了驗證計算結果的正確性的

#include#includeusing namespace std;

const int n= 40000000;

int prime[n],cnt;

bool not_prime[n]=;

int main()

{ cin.sync_with_stdio(false);

clock_t a,b,c,d,e,f;

memset(prime,0,sizeof(prime));

memset(not_prime,0,sizeof(prime));

a=clock();

cnt=0;

for(int i=2;i三次時間分別為1.85691 1.30005 0.782549

素數篩法求素數

素數篩類似於打表標記,預先處理掉非素數的數,即素數的倍數 任意非素數都可以由幾個素數相乘得到 於是效率比暴力求解快得多。埃氏篩法的效率為o n loglog n 簡單易懂,但是會重複標記,比如當i為2時,6會被標記掉,然而當i為3時,6又會被重複標記,這樣的重複訪問加大了時間複雜度,於是有了尤拉篩。...

篩法求素數 線性篩法求素數

2021年更新版 篩法求素數 線性篩法求素數 要理解篩法求素數首先要知道乙個定理,整數唯一分解定理 任意大於等於2的正整數都有且只有一種方式寫出其質因子的乘積表示式。a p1p2p3p4 pn pi是素數且pi pj eg 2 2 4 22 12 223 36 2233 也就是說任意乙個合數都能分成...

Python求質數 素數

先寫乙個裝飾器d1.py,為了測試執行時間 from functools import wraps import time deff1 func wraps func deff2 begin time.time func end time.time print cost end begin retu...