题解 | #约数的个数#

约数的个数

https://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6

#include <iostream>
#include <vector>
#include <cmath>

// 计算约数个数
int countDivisors(int num) {
    int count = 0;
    int sqrtNum = static_cast<int>(std::sqrt(num));

    for (int i = 1; i <= sqrtNum; ++i) {
        if (num % i == 0) {
            count += 2; // 计算两个因子:i 和 num/i
            if (i == num / i) {
                count--; // 如果 i 和 num/i 相等,只计算一个
            }
        }
    }

    return count;
}

int main() {
    int N;
    std::cin >> N;

    std::vector<int> nums(N);

    // 输入整数
    for (int i = 0; i < N; ++i) {
        std::cin >> nums[i];
    }

    // 计算并输出每个数的约数个数
    for (int i = 0; i < N; ++i) {
        int result = countDivisors(nums[i]);
        std::cout << result << std::endl;
    }

    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务