Perfect square or not?

前端 未结 1 1900
庸人自扰
庸人自扰 2020-12-07 21:13

This is a code to check if a number is perfect square or not. Why does it work ?

static bool IsSquare(int n)
{
    int i = 1;
    for (; ; )
    {
        if         


        
相关标签:
1条回答
  • 2020-12-07 22:10

    Because all perfect squares are sums of consecutive odd numbers:

    • 1 = 1
    • 4 = 1 + 3
    • 9 = 1 + 3 + 5
    • 16 = 1 + 3 + 5 + 7

    and so on. Your program attempts to subtract consecutive odd numbers from n, and see if it drops to zero or goes negative.

    You can make an informal proof of this by drawing squares with sides of {1,2,3,4,...} and observe that constructing a square k+1 from square k requires adding 2k+1 unit squares.

    0 讨论(0)
提交回复
热议问题