【发布时间】:2014-02-25 15:09:02
【问题描述】:
void print(int num)
{
for(int i=2; i<sqrt(num); i++) // VS for(int i=2; i<num/2; i++)
{
if(num%i==0)
{
cout<<"not prime\n";
exit(0);
}
}
cout<<"prime\n";
}
我知道这些算法在寻找素数方面很慢,但我希望通过这些示例了解 Big oh。 我假设从 i=2 到 i 的算法
有人能用大 oh 表示法根据输入 num 来解释这两种算法的运行时间吗?
【问题讨论】:
-
“我假设从 i=2 到 i 的算法”... 是吗?您对此有何假设?
-
这是您关于单循环大o 的第三个非常基本的问题。也许你应该买一本关于这个主题的书或视频讲座......
-
其实big-oh一般来说不是很有趣,你应该关心实际性能。是的,这可能非常不同。在这种情况下,您在循环中计算平方根,这可能会相当昂贵。因此,只要这些令人眼花缭乱的猪坐在那里,任何性能优化都是毫无意义的。好吧,也许你很幸运,编译器会为你解决这个问题,但你不应该依赖它。
-
也许我的眼睛在捉弄我,但是.. for 循环条件不应该是 'i
标签: c++ algorithm big-o time-complexity primes