Lab 1 質數計算算法複雜度

prime: array [1..n] of boolean = all true

for p in 2..sqrt(n) loop

if prime[p] then

m = p*p

while m <= n loop

prime[m] = false

m = m+p

end loop

end if

end loop

 

很簡單的算法,粗略估計是O(n*n^1/2),重寫分析後得出結論是O(nlogn)。

 

一開始的時候我沒有按最快情況考慮if prime[p],理論上講應該是更精確的,但是在計算中發現把我整個導向了一個莫名其妙的地方~~老師的提示是按最壞情況考慮,重寫算法,結果得出上面的結論,正在等待老師的批改~~

 

作算法作業最鬱悶的就是總不是很確定自己應該精確到什麼程度,太精確了計算不出來,而簡單得計算往往又不能達到需要的精確程度,每次做出來一個結果都不知道是不是老師要的,雖然理論上應該不算是錯的,糾結……

 

 

這個比較鬱悶的老師,專注於莫名其妙的細節而不是算法本身,上課講的算法簡單的一塌糊塗~~~好吧,也算是提高一下我的細節,很多時候臺粗枝大葉了,磨磨我的性子吧~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章