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],理论上讲应该是更精确的,但是在计算中发现把我整个导向了一个莫名其妙的地方~~老师的提示是按最坏情况考虑,重写算法,结果得出上面的结论,正在等待老师的批改~~

 

作算法作业最郁闷的就是总不是很确定自己应该精确到什么程度,太精确了计算不出来,而简单得计算往往又不能达到需要的精确程度,每次做出来一个结果都不知道是不是老师要的,虽然理论上应该不算是错的,纠结……

 

 

这个比较郁闷的老师,专注于莫名其妙的细节而不是算法本身,上课讲的算法简单的一塌糊涂~~~好吧,也算是提高一下我的细节,很多时候台粗枝大叶了,磨磨我的性子吧~~

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