- 慧通面试题目:一个任意整数M,不能for用来判断他是否是一个平方数。
解答一:
sqrt(M)==(int)sqrt(M)?1:0;
解答二:
//原理:(n+1)2 = n2+2*n+1 依次迭代(1说明是平方数,0不是平方数):
int check(int M)
{
int s=1;
int n=1;
if(M<0) return -1;
if(M<=1) return 1;
while(s<M)
{
s+=n+n+1;
n++;
}
return M==s?1:0
}