您的位置:首页 > 其它

求解500万以内的亲和数

2014-01-01 22:34 148 查看
代码来自《编程艺术系列》

这段代码很优雅、很有内涵,如下:

#include <iostream>

using namespace std;

#define MAXVAl 5000000

int sum[MAXVAl+1];

int main(int argc, char* argv[])
{
int i, j;
for(i = 0; i <= MAXVAl; i++){
sum[i] = 1;
}
for(i = 2; i+i <= MAXVAl; i++){
j = i + i;
while(j <= MAXVAl){
sum[j] += i;
j += i;
}
}
for(i = 0; i <= MAXVAl; i++){
if(sum[i] > i && sum[i] <= MAXVAl && sum[sum[i]] == i){
cout << i << " " << sum[i] << endl;
}
}

return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: