小智 9
"最优解决方案"很少存在,但是一个相当快速的算法如下(任何人都知道它的名字?),它被称为巴比伦方法:
int num = 4567;
int r1 = num / 2;
int r2 = 2;
while (std::abs(r2 - r1) > 1) {
r2 = (r1 + r2) / 2;
r1 = num / r2;
}
Run Code Online (Sandbox Code Playgroud)
这里r1和r2是平方根的较低和较高的近似.在你的情况下,你需要较小的一个.