如果我像她一样编写我的主要检查函数。,
for(int i=2; i<=sqrt(n); ++i) {//code}
每次迭代都会计算 sqrt() 或者 C 编译器是否足够聪明,可以计算一次 sqrt 并存储结果?
任何建议都会非常有帮助。谢谢你
如果编译器可以可靠地确定
n
确实永远不会改变,则可以通过预先计算来自由地对其进行优化。这个“可靠的机构”可能并不像你想象的那么容易:-)
但是,如果您不想担心它可能不会被检测为恒定的可能性,只需自行执行以下操作:
double sqrn = sqrt(n);
for (int i = 2; i <= sqrn; ++i) {
//code
}