21xrx.com
2025-03-23 21:09:37 Sunday
文章检索 我的文章 写文章
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;
}

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

  
  

评论区