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

完全平方数?

首先,背下1-20的平方数,因为常用。

然后牢记以下规律:
完全平方数,凡是个位为0的,其平方根个位必为0
完全平方数,凡是个位为1的,其平方根个位必为1或9
完全平方数,凡是个位为4的,其平方根个位必为2或8
完全平方数,凡是个位为5的,其平方根个位必为5
完全平方数,凡是个位为6的,其平方根个位必为4或6
完全平方数,凡是个位为9的,其平方根个位必为3或7

然后,对于一个比较大的整数,比如:23916
一共有5位数字,假设它是完全平方数,那么它的平方根应该是一个3位数,因为100的平方是最小的5位数。
同时,这个平方根应该小于200,因为200的平方是40000比原数大。
我们不妨取个中间数150,因为已知15的平方是225(你背了),所以很容易算出150的平方是22500,比原数小。
同理,算出160的平方是25600,比原数大。
所以,如果24346时一个完全平方数,它的平方根应该大于150且小于160。
完全平方数,凡是个位为6的,其平方根个位必为4或6。
计算154的完全平方,等于 23716 比 23916 小200,
计算156的完全平方,等于 24336 比 23916 大420,
所以23916不是完全平方数。

对于一个位数较多的小数,比如:2.4336,2.43360和24.336.
小数点后位数为单数且“最后一位不为0”的数,一定不是完全平方数;小数点后位数为偶数的数,可能是完全平方数,比如:24.336小数点后位数为3,一定不是完全平方数;
但2.43360小数点后位数为5,却可能是完全平方数;
2.4336小数点后位数为4,可能是完全平方数。
判断一个小数是不是完全平方数比较常用的方法是“百倍扩大”也叫“移位法”,即把原数小数点向右移动“双数”位,直至小数变为整数,计算新整数的平方根,再把小数点按“百倍扩大”的次数移回,如:2.4336 小数点向右移动4位(两次“百倍扩大”)变为24336,计算24336的平方根(156),小数点左移两位(1.56)即为2.4336的平方根。

分数,只要分子分母都是完全平方数,这个分数就是完全平方数,反之,只要有一个不是,这个分数就不是完全平方数。

如果,假设,比如,你碰见一个超大的数,比如:962707421742.79527904,建议你验算一下前面的计算,因为你一定算错了什么。

 

判断输入数的平方根是否为整数:

#include <stdio.h>

#include <math.h>
int main()
{
      int x,y;
      scanf("%d",&x);
      y=(int)sqrt(x);
      if (x==y*y)
          printf("ok/n");
      else
          printf("no/n");
         
}


 

如果正着想肯定撞车,逆着来就行了,哈哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值