题解 | #约数的个数#

约数的个数

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

#include <stdio.h>
#include <math.h>

int count_divisors(int num) {
    int count = 0;
    int sqrt_num = (int)sqrt(num);
    for (int i = 1; i <= sqrt_num; i++) {
        if (num % i == 0) {
            // 如果i是因子,那么num/i也是因子
            count += 2;
            // 如果i*i等于num,说明num是一个完全平方数,避免重复计数
            if (i * i == num) {
                count--;
            }
        }
    }
    return count;
}

int main() {
    int N;
    scanf("%d", &N); // 读取整数数量

    while (N--) {
        int num;
        scanf("%d", &num); // 读取每个整数
        printf("%d\n", count_divisors(num)); // 输出约数个数
    }

    return 0;
}

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务