Friendly number(c++)

亲和数,又称相亲数、友爱数、友好数,指两个不同的正整数中,彼此的全部约数之和(本身除外)与另一方相等。比如,假如A B是亲和数,那么A的所有因子之和(本身除外)等于B,B的所有因子之和(本身除外)等于A。毕达哥拉斯曾说:“朋友是你灵魂的倩影,要像 220220 与 284284 一样亲密。”

人和人之间讲友情,有趣的是,数与数之间也有相类似的关系,数学家把一对存在特殊关系的数称为“亲和数”。常言道,知音难觅,寻找亲和数更使数学家绞尽了脑汁。亲和数是数论王国中的一朵小花,它有漫长的发现历史和美丽动人的传说。

计算鸭对亲和数产生了兴趣,他想知道给出某个正整数 nn,求出一对亲和数 AA 和 BB 满足 A\ge nA≥n,并且 AA 是最小的。

输入

一行一个正整数 n\ (6\le n \le 18000)n (6≤n≤18000)。

输出

一行两个整数 AA 和 BB。

样例

输入       211

输出      220 284

代码(c++)

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>> n;
    for(int a = n; ; a++)
    {
          int b = 0;
          for(int i = 1; i * i <= a; i++)
          {
              if(a % i == 0)
              {
                  b += i;
                  if(i != 1 && a / i != i)
                  {
                      b += a / i;
                  }
              }
          }
          int sum = 0;
          for(int i = 1; i * i <= b; i++)
          {
              if(b % i == 0)
              {
                   sum += i;
                   if(i != 1 && b / i != i)
                  {
                      sum += b / i;
                  }
              }
          }
          if(sum == a && a != b)
          {
              cout<< a << " " << b;
              return 0;
          } 
      }
      return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值