#include<stdio.h>
#include<math.h>
int main(){
double n;
while(~scanf("%lf",&n)){
double x=sqrt(n);
printf("%d\n",x==(int)x);
}
return 0;
}
当约数个数为奇数的时候,这个数一定为平方数!所以此问题就转变为判断一个数是不是平方数.
原理:
30的约数为: (1,30), (2,15), (3,10)
36的约数为: (1,36), (2,18), (3,12), (4,9), (6)
一个数的约数总是成对的出现,当为平方数的时候有两个约数相同,就只算一个.
PS:判断平方数的方法速度更快!