8240 亲密数对1

 

 

 

描述

键盘输入 N,N 在 2 至 2000 之间,求 2 至 N 中的亲密数对,就是 A 的因子和等于 B,B 的因子和等于 A,且 A=B。 如 48 和 75 是亲密数对。48 的因子和为 2+3+4+6+8+12+16+24=75,而75的因子和为 3+5+15+25=48。

输入描述

只有一行,为一个整数 N。

输出描述

输出若干行,每行两个整数(用一个空格隔开),按照由小到大的顺序输出亲密数。

样例输入 1 

200

样例输出 1 

48 75
75 48
140 195
195 140

提示

数据范围与提示

2N2000

#include<bits/stdc++.h>
#define f(i,s,e) for(int i = s; i <= e; i++)
#define ll long long
using namespace std;
const int N = 1e3+10,inf = 0x3f3f3f3f;
int check(int n)//求n的所有因数和,但是因数不含自己本身 
{
    int sum = 0; //求和
    f(i,2,n - 1) //循环2 到 n - 1 
        if(n % i == 0) //判断i是不是n 的因数
            sum += i; //把因数加上
    return sum; 
}
int main()
{
    int n; cin >> n;
    f(i,2,n) //i就是第一个数
    {
        int j = check(i); //j是第二个数 
        if(check(i) == j && check(j) == i && j != i && j <= n)
            cout << i << " " << j << endl;
    } 
    return 0;
}

 

posted @ 2024-06-28 14:46  CRt0729  阅读(52)  评论(0编辑  收藏  举报