1. 描述

给定一个数n,如何判断n是否为另一个数的平方,即是否为平方数

2. 代码

#include<iostream>
using namespace std;

// n^2 = (n-1)^2 +2(n-1) + 1
// n^2 = (n-1)^2 +(2n -1)
// n^2 = (n-2)^2 + (2(n-1) -1) + (2n-1)
// ······
// ······
// ······
// 推导得到公式:n^2 = 1+3+5+7+······+(2n-1)

bool IsSquare(int num)
{
// 变化步长为2,初值为1,一直减到num不再大于0
for(int i=1; num>0; i+=2)
{
num -= i;
}

//如果num减到最后,恰好等于0,就是平方数;反之,就不是
if(num==0)
{
return true;
}
else
{
return false;
}
}

int main()
{
int num = 0;
cin>>num;

bool flag=IsSquare(num);
cout<<flag<<endl;

system("pause");

return 0;
}