做平方根一次比平方n慢吗?

时间:2013-01-28 14:42:37

标签: c++

我只是在查看质数的一些算法并且遇到了这个:

for(int i=2;i*i <= n;i++)
{/*assume no operations here*/} 

我只是想知道上面的循环是否会比以下更快?

int x=sqrt(n);
for(int i=2;i<=x;i++)
{/*nop*/}

1 个答案:

答案 0 :(得分:3)

当然,这取决于n的值。无论如何,sqrt()无法保证为您提供正确的结果:由于四舍五入的原因,您最终可能会得到x的值,这比预期值少一个并且会破坏算法。我不会去进行微观优化,而是坚持正确性并使用原始版本,这样可以保证产生正确的结果。