while(i <= sqrt(static_cast <double>(n))

Sim*_*ity -1 c++ primes sqrt

在"没有恐惧的C++:让你感觉聪明的初学者指南"一书中,在第(2)章:决策,决定中,您可以看到这段代码作为素数程序的一部分:

while (i<=sqrt(static_cast<double>(n))
Run Code Online (Sandbox Code Playgroud)

假设"i"被初始化为"2",并且"n"是用户的输入.

为什么我们要比较"n"的"sqrt"而不是"n"呢?

谢谢.

Pau*_*l R 6

因为你不会得到任何因素> sqrt(n)的非素数因子(你会发现另一个因子较小).

这是一个非常糟糕的测试,将它写成:

while (i*i <= n)
Run Code Online (Sandbox Code Playgroud)