21xrx.com
2024-11-05 18:41:39 Tuesday
登录
文章检索 我的文章 写文章
C++中如何判断一个数是否为平方数?
2023-06-22 22:44:51 深夜i     --     --
C++ 判断 平方数

在C++中,判断一个数是否为平方数可以通过以下几种方法实现:

1. 二分查找法

平方数是连续的奇数和,即1、4、9、16、25、36、49……因此可以利用二分查找法来判断一个数是否为平方数。

具体实现方法如下:


bool isPerfectSquare(int num) {

  long long left = 1, right = num;

  while (left <= right) {

    long long mid = left + (right - left) / 2;

    long long square = mid * mid;

    if (square == num)

      return true;

    

    else if (square < num) {

      left = mid + 1;

    }

    else

      right = mid - 1;

    

  }

  return false;

}

2. 牛顿迭代法

牛顿迭代法是一种求解非线性方程的方法,在判断一个数是否为平方数时也可以使用该方法。

我们可以根据以下公式迭代求解平方根:


x(n+1) = (x(n) + num / x(n)) / 2

当`x(n)`和`x(n+1)`两个值相等或差距很小时,即可认为该数为平方数。

实现代码如下:


bool isPerfectSquare(int num) {

  if (num < 2)

    return true;

  

  long long x = num / 2;

  while (x * x > num) {

    x = (x + num / x) / 2;

  }

  return x * x == num;

}

以上两种方法都可以判断一个数是否为平方数,具体选择哪种方法取决于实际情况和个人喜好。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复