hrbust 1563 亲和数

来源:互联网 发布:那些年网络歌曲动漫 编辑:程序博客网 时间:2024/06/03 13:26

a的i倍的数b,a是b的真因子数

 亲和数Time Limit: 1000 MSMemory Limit: 10240 KTotal Submit: 138(80 users)Total Accepted: 78(75 users)Rating: Special Judge: NoDescription

亲和数是一种古老的数。

遥远的古代,人们发现某些自然数之间有特殊的关系:如果两个数a和b,a的所有真因数之和加上1等于b,b的所有真因数之和加上1等于a,则称a,b是一对亲和数。


据说,毕达哥拉斯(Pythagoras, 希腊文Πυθαγόρας,约前580年—前500年)的一个门徒向他提出这样一个问题:“我结交朋友时,存在着数的作用吗?”毕达哥拉斯毫不犹豫地回答:“朋友是你的灵魂的倩影,要象220和284一样亲密。”又说“什么叫朋友?就象这两个数,一个是你,另一个是我。”后来,毕氏学派宣传说:人之间讲友谊,数之间也有“相亲相爱”。从此,把220和284叫做“亲和数”或者叫“朋友数”或叫“相亲数”。这就是关于“亲和数”这个名称来源的传说。220和284是人类最早发现,又是最小的一对亲和数。


Output

输出100000以内的所有亲和数。

从小到大输出,每行一对亲和数,中间用一个空格隔开。

比如这三对亲和数:


220 284

1184 1210

2620 2924

这样是按照从小到大的输出。


#include<stdio.h>
using namespace std;


int main()
{
    int a[100003];
    for(int i=1;i<=100000;i++)
        a[i]=1;
    for(int i=2;i<=50000;i++)
    {
        int j=2*i;
        while(j<100000)
        {
            a[j]+=i;
            j+=i;
        }
    }
    for(int i=220;i<100000;i++)
    {
        if(a[i]>i&&a[i]<100000&&a[a[i]]==i)
        {
            printf("%d %d\n",i,a[i]);
        }
    }
}

0 0
原创粉丝点击