學習自:傳送門
1.乙個乙個找,找因子直到i
2.找因子直到i/2
比如:判斷i是否為素數,則看i是否能整除j=2~i/2
3.找因子直到根號i
比如:判斷i是否為素數,則看i是否能整除j=2~根號i
因為對於16,根號16=4,那麼判斷8是16因子就沒必要了,因為2*8=16,如果已經找到8,那麼肯定找到2了
如果根號i前沒有i的因子,那麼根號i後面也沒有因子,因為因子必定是乙個:
小於等於根號i的數*大於等於根號i的數==i
這裡有兩種方法
@1:j*j<=i
@2:j和根號i對比
我之前用第二種方法,但是好像容易出問題,因為那個浮點數到整型的邊界不好處理,所以這裡哪怕第一種效率差一點,我也推薦用第一種
4.除了0和2以外的偶數都不是素數
然後只用判斷計數就好了,這裡的j可以用+=2來遞增,因為跳過偶數嘛
5.埃氏篩法:乙個數的倍數肯定不是素數
比如說11的倍數22,33,44,55,121...都不是素數,都可以用篩子篩選掉
6.最優版
看到睡著了都沒看懂,先留下別人的**,下次再學
#includeusingnamespace
std;
const
int maxn=100000
;int prime[maxn];//
定義在外面,初始值為0
inta[maxn];
intmain()
}}
python判斷素數優化 求素數優化演算法
在比賽或者工作時,有時候會經常要求我們程式設計求素數,但是我們自己寫出來的時間複雜度太高,所以我在這裡做個總結。先貼上最終函式,該段 在開啟最大 優化時,可以直接內嵌進呼叫程式中,使得速度更加極致。c語言 對 n 進行素數判斷 inline static int is prime int n int...
篩法求素數 求100之內的素數
素數 定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。篩法求素數,需要對素數和非素數做出不同的標記,或者只標記非素數 素數 現用0標記非素數,素數不標記。引用陣列,使0 100與陣列元素一 一相對應 0即a 0 1即a 1 2即a 2 注意特例,1 即a 1 不是素數,首先標記為0 剩下...
求素數個數的優化 LeetCode204
計數質數 統計所有小於非負整數 n 的質數的數量。示例 輸入 10 輸出 4 解釋 小於 10 的質數一共有 4 個,它們是 2,3,5,7 第一種解法容易想到但是會超時 class solution return counter 判斷是否是素數 public boolean isprime int...