-4

我只是在查看一些素数算法并遇到了这个问题:

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

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

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

1 回答 1

3

当然,这取决于 的值n。无论如何,sqrt()不​​能保证给你正确的结果:由于四舍五入的原因,你最终可能会x得到一个比预期小一的值并破坏算法。与其进行微优化,我会在这里坚持正确性并使用原始版本,这样可以保证给出正确的结果。

于 2013-01-28T14:46:59.803 回答