求素數的優化

2022-07-03 15:00:19 字數 875 閱讀 6635

學習自:傳送門

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.最優版

看到睡著了都沒看懂,先留下別人的**,下次再學

#includeusing

namespace

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...