文章

17

粉丝

177

获赞

2

访问

118.3k

头像
如果约数遍历使用n/2会超时,但是用sqrt(n)就不会超时
P1152 清华大学上机题
发布于2021年9月11日 10:53
阅读数 8.2k

#include<stdio.h>
#include<math.h>
long factor_sum(long n){
    long sum = 0;
    for(long i = 1;i <= sqrt(n);i++){
        if(n % i == 0){
            if(n / i == i) sum++;
            else sum += 2;
        }
    }
    return sum;
}
int main()
{
    int n;
    long num;
    while(scanf("%d", &n)!= EOF){
        for(int i = 0;i < n;i++){
            scanf("%ld", &num);
            printf("%ld\n", factor_sum(num));
        }
    }
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发