假如有两个数 a 、b ,1<=a<b<=1000000000
求 [a,b] 区间内的多重完全数
多重完全数是各因子之和能被这个数整除的数。
例 6 的 因子和 = 1 + 2 加 3 + 6 = 12
12能被6整除, 故 6 是 多重完全数 。
我自己尝试写了,不过普通方法时间超限。
我想知道 有没有好的方法实现。
重点在于 最大可以到10亿
难道用列举吗,但是 貌似又很难找到规律
假如有两个数 a 、b ,1<=a<b<=1000000000
求 [a,b] 区间内的多重完全数
多重完全数是各因子之和能被这个数整除的数。
例 6 的 因子和 = 1 + 2 加 3 + 6 = 12
12能被6整除, 故 6 是 多重完全数 。
我自己尝试写了,不过普通方法时间超限。
我想知道 有没有好的方法实现。
重点在于 最大可以到10亿
难道用列举吗,但是 貌似又很难找到规律
#include <stdio.h>
void find_multiply_perfect_number(int a, int b) {
int sum,i,j;
for (i = a ; i <= b ; i++) {
sum = 0 ;
if (i % 2 ==0) {
for (j = 1 ; j*j <= i ; j++) {
if (i%j == 0) {
sum += j;
if (j != i/j) {
sum += i/j ;
}
}
}
if (sum%i == 0){
printf("%d\n",i);
}
}
}
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
find_multiply_perfect_number(a, b);
return 0;
}