**根据数学的等差数列求和公式:**
由此可知:任意数的平方都能用一个初值为1,等差为2的等差数列表示,所以判断一个数是不是平方数可以用这个数依次减1,减3,减5…,如果最后减到为0,那么这个数就是平方数,否则不是
代码如下:
#include<stdio.h>
int IsSquare(int n)
{
int i;
for(i=1; n>0; i+=2)
{
n-=i; //每次都减一个i 减到小于0结束
}
if(n==0)
return 1; //如果减到最后结果是0 就是一个平方数
else
return 0; //否则,就不是平方数
}
int main()
{
int n;
scanf("%d",&n);
if(IsSquare(n))
printf("%d是平方数\n",n);
else
printf("%d不是平方数\n",n);
return 0;
}