如何判断一个数是否为完全平方数?

如题所述

完全平方数的特征
性质1:完全平方数的末位数只能是0,1,4,5,6,9。   
性质2:奇数的平方的个位数字为奇数,十位数字为偶数。
性质3:如果完全平方数的十位数字是奇数,则它的个位数字一定是6;反之,如果完全平方数的个位数字是6,则它的十位数字一定是奇数。
性质4:偶数的平方是4的倍数;奇数的平方是4的倍数加1。
性质5:奇数的平方是8n+1型;偶数的平方为8n或8n+4型。
性质6:平方数的形式必为下列两种之一:3k,3k+1。
性质7:不能被5整除的数的平方为5k±1型,能被5整除的数的平方为5k型。   
性质8:平方数的形式具有下列形式之一:16m,16m+1, 16m+4,16m+9。
性质9:完全平方数的数字之和只能是0,1,4,7,9。
根据这些特征可以判断一个数是否为完全平方数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-11-22
一、数学概念:
完全平方即用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数
能表示成某个整数的平方的形式,则称这个数为完全平方数。
二、算法设计:
根据概念,只要存在一个整数m,使得m*m的值为n,那么n就是完全平方数了。
于是只需要对可能的m进行遍历,即可得到n是否为完全平方数的结论了。
三、参考代码:
#include <stdio.h>
int main()
{
int n,m;
scanf("%d",&n);//输入n值。
m = 1; //初始为最小值。
while(m*m<n) m++;//m自加,一直到m*m>=n时退出循环。
//此时有两种可能,一种m*m与n相等,则为完全平方数;另一种则是m*m>n, 此时不存在使得m*m=n成立的m值,n不是完全平方数。
if(m*m==n) printf("%d 是完全平方数\n", n);
else printf("%d 不是完全平方数\n", n);//输出结果。
return 0;
}