計算素數演算法的一些優化(程式設計珠璣閱讀感想)

2021-06-22 07:43:51 字數 562 閱讀 1116

這篇文章同樣是關於我讀程式設計珠璣的一些體會與感想,這是關於計算素數演算法優化的一些感想。

在學c語言的時候,用程式列印出某個範圍內的所有素數的練習題大家都不陌生,我當時想到的演算法類似下面這樣的。

int prime(int n)

但是作者還是覺得迴圈是累贅,有提供了下面的演算法,思想大概是這樣,對能被2、3、5整除的數進行檢驗,然後在將奇數作為可能因子(我怎麼想不到大於2的偶數都不可能作為因子呢,笨···)。

int prime(int n)

後來作者考慮到sqrt比較費時,所以對迴圈做了如下修改(不得不佩服啊~)。

for(i=7;i*i<=n;i=i+2)

看完之後想了想,如果在資料量相當大的情況下,用演算法一不知道要花多少時間啊,根據作者的監測,當n=100000時,演算法一由於時間太長沒法給出具體數字,演算法二用了近3000秒,而最後一種把開方換成乘法用了一分鐘左右,當然這些時間資料是在作者機器上的執行時間。此時深刻體會到良好的演算法設計可以大大提高程式的效率。

對求素數演算法的一些簡單優化

求素數應該是每個程式設計者都會遇到的一道題目 筆者剛開始學程式設計時,只是根據素數定義將其實現 定義 在大於1的自然數中,除了1和它本身以外不再有其他因數 上面的 timeit為ipython自帶的魔法方法,用於簡單測試執行時間 結果時間為51.4 ms 1.75 ms per loop mean ...

一些優化演算法

1.內點法介紹 interior point method dymodi的專欄 csdn部落格 2.column generation 列生成 演算法 從下料問題看整數規劃中的列生成方法 附gurobi求解器源 知乎 3.群演算法 遺傳演算法ga 最優化演算法之粒子群演算法 pso 模擬退火演算法s...

一些數學優化計算的工具

snopt 大規模線性 二次和非線性規劃 minos 線性與非線性規劃 lancelot 無約束最優化 非線性最小二乘 邊界約束最優化和一般約束最優化問題 minpack 非線性方程組和非線性最小二乘問題 proc nlp 無約束最優化 非線性最小二乘 線性約束最優化 二次規劃和一般約束最優化問題 ...