Kau*_*hal 12 algorithm perfect-square
这是一个代码,用于检查数字是否是完美的正方形.它为什么有效?
static bool IsSquare(int n)
{
int i = 1;
for (; ; )
{
if (n < 0)
return false;
if (n == 0)
return true;
n -= i;
i += 2;
}
}
Run Code Online (Sandbox Code Playgroud)
das*_*ght 44
因为所有完美的正方形都是连续奇数的总和:
等等.您的程序尝试从中减去连续的奇数n
,并查看它是否降为零或变为负数.
您可以通过绘制两边的正方形来对此进行非正式证明,{1,2,3,4,...}
并观察k+1
从正方形构造正方形k
需要添加2k+1
单位正方形.