这是一个检查数字是否为完全平方的代码。为什么有效?
static bool IsSquare(int n)
{
int i = 1;
for (; ; )
{
if (n < 0)
return false;
if (n == 0)
return true;
n -= i;
i += 2;
}
}
最佳答案
因为所有完全平方数都是连续奇数之和:
等等。您的程序尝试从
n
中减去连续的奇数,然后查看它是否降为零或变为负数。您可以通过绘制边为
{1,2,3,4,...}
的正方形来对此进行非正式证明,并观察到从正方形 k+1
构建正方形 k
需要添加 2k+1
单位。关于algorithm - 完美的正方形与否?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12862637/