判断是否是完全平方数

2019-01-22  本文已影响0人  ccpjsg
  int mi=(int)sqrt((double)N);
  int flag=0;
  if(N==mi*mi) flag=1;

这里是判断一个数是否是完全平方数的代码。经过测试,已经确定为正确。第三行的if判断语句是核心。但是我在正确之前有几个错误的写法,十分具有迷惑性。
如下所示。

  1. if(N%mi==0) flag=1;
  2. if(N/mi==mi) flag=1
    这两个都是错的,但是十分具有迷惑性。
    我想主要还是因为C语言的数据类型的限制。比如N=200,那经过第一行的求开方之后的根有mi=14。第二个就可以看出是错的,此时200/14==14。但是很明显200并不是完全平方数。第一个可举例N=20,那mi=4,20%4==0。但是这里也很明显,20并非完全平方数。
上一篇下一篇

猜你喜欢

热点阅读