当我这样做时,在我的代码中效果很好...
...
for (i = 2; i <= sqrt(500000); i++)
...
但是喜欢
for (i = 2; i < sqrt(500000) + 1; i++)
编译后执行,出现错误,提示
Segmentation fault (core dumped)
。for loop body
是:for (i = 2; i <= sqrt(500000); i++) {
summation[i * i] += i;
for (j = i + 1; j <= 500000 / i; j++) {
summation[i * j] += (i + j);
}
}
两个for循环之间有什么区别吗?谢谢
最佳答案
您的第二个循环再次运行:500000不是一个完美的正方形,因此i < sqrt(500000)
和i <= sqrt(500000)
始终相等,并且+1确保另一个迭代。
关于c - 与C中的sqrt()函数混淆,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5297474/