21xrx.com
2024-12-22 23:07:31 Sunday
登录
文章检索 我的文章 写文章
C++代码:判断整数是否为完全平方数
2023-06-28 15:56:51 深夜i     --     --
C++ 代码 判断 整数 完全平方数

在程序设计中,判断一个数字是否为完全平方数是很常见的任务。“完全平方数”指的是某个数能表示成一个自然数的平方,例如 1、4、9、16 等等。下面我们将介绍使用 C++ 编程语言实现判断整数是否为完全平方数的代码。

解决方案

要解决这个问题,我们可以使用二分查找算法。我们定义一个变量 low=0,再定义一个变量 high=n,n 为输入的数字。然后需要不断进行二分查找,直到 low=high 或 low=high-1 时,判断 low 和 high 中哪个数的平方等于 n。

接下来就是代码实现部分了:

#include

using namespace std;

bool isPerfectSquare(int n) {

  if (n == 1)           // 如果 n=1,则表示为完全平方数

    return true;

  long long low = 0, high = n;   // 定义 low 和 high

  while (low <= high) {      // 二分查找

    long long mid = (low + high) / 2;

    if (mid * mid == n)

      return true;

    else if (mid * mid < n)

      low = mid + 1;

    else

      high = mid -1;

  }

  return false;

}

int main() {

  int n;

  cin >> n;

  if (isPerfectSquare(n))      // 判断是否为完全平方数

    cout << "Yes\n";

  else

    cout << "No\n";

  return 0;

}

上面的代码中,我们首先判断输入的数字是否为 1,如果是,就直接返回 true。否则,使用二分查找算法来判断是否为完全平方数。当 low 和 high 中间的数的平方小于 n 时,将 low 指向 mid+1;当 mid 的平方大于 n 时,将 high 指向 mid-1。

结果与测试

我们现在来测试实现的这个 C++ 程序。假设输入数字为 4,则该程序会输出 Yes,因为它是完全平方数(2 的平方等于 4)。而如果输入数字为 7,则程序会输出 No,因为 7 不是完全平方数。

总结

我们现在已经学会了如何判断一个数字是否为完全平方数,使用的是二分查找算法来实现。值得注意的是,这里的 low 和 high 分别是 long long 类型,因为数字可能比较大,不声明会出现越界等错误。

  
  

评论区

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