一:
最常用,但是也是效率最低的
直接判斷法
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...