当前位置:首页 C++ > 正文

c++判断一个数是否为完全平方数

作者:野牛程序员:2023-07-23 19:31:27 C++阅读 3121

在C++中,可以使用以下方法来判断一个数是否为完全平方数:

  1. 方法一:循环遍历法 在这种方法中,我们从1开始逐个尝试每个数,直到找到它的平方等于给定的数,或者找到一个大于给定数的平方(此时可以判断给定数不是完全平方数)。

#include <iostream>

bool isPerfectSquare(int num) {
    for (int i = 1; i <= num / i; i++) {
        if (i * i == num) {
            return true;
        }
    }
    return false;
}

int main() {
    int num;
    std::cout << "Enter a number: ";
    std::cin >> num;
    
    if (isPerfectSquare(num)) {
        std::cout << num << " is a perfect square." << std::endl;
    } else {
        std::cout << num << " is not a perfect square." << std::endl;
    }
    
    return 0;
}
  1. 方法二:二分查找法 在这种方法中,我们可以使用二分查找来快速找到给定数的平方根,如果平方根是整数,则给定数是完全平方数。

#include <iostream>

bool isPerfectSquare(int num) {
    if (num < 0) return false;
    
    long left = 0;
    long right = num;
    
    while (left <= right) {
        long mid = left + (right - left) / 2;
        long square = mid * mid;
        
        if (square == num) {
            return true;
        } else if (square < num) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    
    return false;
}

int main() {
    int num;
    std::cout << "Enter a number: ";
    std::cin >> num;
    
    if (isPerfectSquare(num)) {
        std::cout << num << " is a perfect square." << std::endl;
    } else {
        std::cout << num << " is not a perfect square." << std::endl;
    }
    
    return 0;
}

无论选择哪种方法,都可以判断给定的数是否为完全平方数。第二种方法(二分查找法)更加高效,特别是对于大数值的输入。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击