回 帖 发 新 帖 刷新版面

主题:[投票]新年出几题给大家做做!!!答对给分

亲密数
    如果有两个不同的整数,其中任一个数的全部因子(包括1,但不包括其自身)之和等于另一个数,反之亦然,则称这两个整数互为亲密数。例如220和284就是一对亲密数。
    因为220的因子有1,2,4,5,11,20,22,44,55,110。这些因子的和为284,
    而284的因子有1,2,4,71,142,它们的和为220。
试编程求出M~N之间的所有亲密数对。1<M<N<=1000000,注意在显示亲密数对时不要重复显示。
例如,输入:1 2000
输出:(每行两个数,中间用“-”隔开,没有任何多余的空格。)
220-284
1184-1210
[em1]

回复列表 (共5个回复)

沙发


#include<iostream>
using namespace std;
int yinzi(int a)
{
    int sum=0,i;
    for(i=1;i<=a;i++)
    {
        if(a%i==0)
        sum=sum+i;
    }
    return sum-a;
}
void main()
{
    int a,b,c,d,i=0;
    cout<<"按大小顺序输入数的范围"<<endl;
    cin>>c;
    cin>>d;
    for(a=c;a<=d;a++)
        for(b=a+1;b<=d;b++)
        {
            i++;
            if(yinzi(a)==b&&yinzi(b)==a)
            {
                cout<<"("<<a<<","<<b<<")"<<endl;
                cout<<i<<endl;
            }
        
    else
        continue;
        }


}


板凳

枚举就有499999500000种如果每种用时10*-6次方也要用5天多的时间
不知还有更好的办法没

3 楼

2楼的,麻烦你用大写。(看不懂)

4 楼

不懂计算机的人还以为这程序是鬼画符呢!!!!!!!

5 楼

[em12][em12][em12]

我来回复

您尚未登录,请登录后再回复。点此登录或注册