题解 | #约数的个数#

约数的个数

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;
}

全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务