三種常用素數構造法

2021-06-21 22:23:42 字數 824 閱讀 6895

一:

最常用,但是也是效率最低的

直接判斷法

code:

[cpp]view plain

copy

#include 

bool

is_prime(

intn)  

intmain()  

}   二:

構造素數表法:

運用時,首先打表,效率會提公升很多

code:

[cpp]view plain

copy

#include 

const

intmaxn = 101;  

bool

prime[maxn];  

bool

is_prime(

intn)  

void

init()  

intmain()  

}   三:

位向量法構造素數表

首先判定n乙個數是否是素數,然後從n~maxn把所有n的倍數都去掉,效率很高

[cpp]view plain

copy

#include 

#include 

const

intmaxn = 101;  

bool

prime[maxn];  

bool

is_prime(

intn)  

void

init()  

}  intmain()  

}  

素數打表(三種篩選法)

第一種用得比較多 篩法1 eraosthenes 愛拉托斯尼篩法 篩法 for i 2 i 1000 i if s i 但是第一種如果是大於百萬級以上的話就 有點吃力了 因為其中有重複計算過的素數,這就不必要了!比如 10這個數,當2或者5的時候都被實行了一次s 10 1 所以為了減少不必要的,就有...

三種素數篩選法詳解 轉

第一種 剔除2 3 4 5 6 的倍數 在i從2開始的增一變化過程中,剔除i的倍數即j i j是大於等於2的自然數,j的上限是問題規模m 為了減少重複步驟,可以每當i遞增到等於第乙個沒有被剔除的 素 數時再剔除該數的倍數,重複上述過程至i到達問題規模m的平方根 1 需要說明的三個問題 假設迴圈到第n...

三種素數篩選方法

第一種 剔除2 3 4 5 6 的倍數 在i從2開始的增一變化過程中,剔除i的倍數即j i j是大於等於2的自然數,j的上限是問題規模m 為了減少重複步驟,可以每當i遞增到等於第乙個沒有被剔除的 素 數時再剔除該數的倍數,重複上述過程至i到達問題規模m的平方根 1 需要說明的三個問題 假設迴圈到第n...