用「埃氏篩法」求2 100以內的質數。

2021-09-29 21:50:35 字數 533 閱讀 8900

思路:先去掉2的倍數,再去掉3的倍數,再去掉5的倍數,……依此類推,最後剩下的就是素數。

質數(又稱素數),是指在大於1的自bai然數中,除了1和它本身外,不能被其他自然數整除(除0以外)的數稱之為質數。

/**

* 求n以內的所有素數

* @param n 範圍

* @return n以內的素數

*/private

static list

getprimes

(int n)

}return result;

}private

static

boolean

divisible

(int n, list

primes)

if(prime >= math.

sqrt

(n))

//如果超過平方根還沒有整除,則退出迴圈

break;}

return

false

;}

找素數(質數) 線性篩法和埃氏篩法

先看這道題 洛谷p1217回文質數 對於這道題,普通的暴力模擬會tle,所以得尋求改進。這裡我學會了兩種方法 第一種 線性篩法 這種演算法的核心思想就是 任何乙個合數都可以由質數相乘得到 下面就是核心 吃透了核心 就可以在其中新增點細節,然後就可以拿去解決問題了 這裡需要開多大的陣列取決自己 boo...

埃氏篩法和線性篩法求素數

演算法中有一類題,題目中涉及到大量素數的判定,只要範圍確定,素數的個數和素數就已經是固定不變的,那麼我們可以考慮先預處理,把範圍內所有素數篩選出來,那麼篩素數的方法有哪些,下面就兩種演算法的思想和標程進行說明。一 埃氏 eratosthenes 篩素數。原理 基於任意整數x的倍數2x,3x,4x,都...

線性篩法求素數(埃氏篩法 尤拉篩法)

篩法都是初始化把所有數都先設為素數,然後篩除合數。理解起來比較簡單,就是從小到大的列舉每乙個數,標記它的所有倍數都是合數 非素數 放到u i 為false,u中的下標對應的就是這個數的值。bool u maxn int num,su maxn 1.埃氏篩法 void prime 從小到大的篩選素數,...