判斷乙個數是否是質數 埃拉託斯特尼篩法

2021-08-20 18:38:23 字數 1196 閱讀 5807

1、題目:

count the number of prime numbers less than a non-negative number, n

.example:

input: 10

output: 4

explanation: there are 4 prime numbers less than 10, they are 2, 3, 5, 7.

2、解答:

這道題給定乙個非負數n,讓我們求小於n的質數的個數,題目中給了充足的提示,解題方法就在第二個提示

埃拉託斯特尼篩法sieve of eratosthenes

中,這個演算法的過程如下圖所示,我們從2開始遍歷到根號n,先找到第乙個質數2,然後將其所有的倍數全部標記出來,然後到下乙個質數3,標記其所有倍數,一次類推,直到根號n,此時陣列中未被標記的數字就是質數。我們需要乙個n-1長度的bool型陣列來記錄每個數字是否被標記,長度為n-1的原因是題目說是小於n的質數個數,並不包括n。 然後我們用兩個for迴圈來實現埃拉託斯特尼篩法,難度並不是很大,**如下所示:

判斷乙個數是否是質數

乙個數如果可以進行因數分解,那麼分解的兩個數一定是乙個小於等於sqrt n 乙個大於等於sqrt n 因此遍歷到sqrt n 即可。因為如果sqrt n 左側找不到因數,右側也一定找不到因數。中心思想 遍歷n是否能被2到sqrt n 之間的數整除,如果不能則為質數。import math defis...

演算法小練習 判斷乙個數是否是質數

第一種常規方法 var isprime function num 查表直接返回的素數 var pmap return dmap num false pmap num true num 5 false num 1 6 true num 1 6 true false 第二種方法 var isprime ...

JS判斷乙個數是否為質數

非正則實現function isprime num 因為2是比較特殊的質數,所以先拿出來 if num 2 else if num 2 0 依次判斷是否能被奇數整除,最大迴圈為數值的開方 let squareroot math.sqrt num 因為2已經驗證過,所以從3開始 且已經排除偶數,所以每...