蓝桥杯 ALGO-117 算法训练 友好数

算法训练 友好数  

时间限制:1.0s   内存限制:256.0MB

问题描述

  有两个整数,如果每个整数的约数和(除了它本身以外)等于对方,我们就称这对数是友好的。例如:
9的约数和有:1+3=4
4的约数和有:1+2=3
  所以9和4不是友好的。
220的约数和有:1 2 4 5 10 11 20 22 44 55 110=284
284的约数和有:1 2 4 71 142=220
  所以220和284是友好的。
  编写程序,判断两个数是否是友好数。

输入格式

  一行,两个整数,由空格分隔

输出格式

  如果是友好数,输出"yes",否则输出"no",注意不包含引号。

样例输入

220 284

样例输出

yes

数据规模和约定

  两个整数都小于10000
 

#include <stdio.h>

int factor_sum(int n)
{
    int sum = 0;
    for (int i = 1; i * i <= n; ++i)
    {
        if (n % i == 0)
        {
            sum += i;
            if (n / i != n && n / i != i)
                sum += n / i;
        }
    }
    return sum;
}

int main()
{
    int a, b;

    scanf("%d %d", &a, &b);
    if (factor_sum(a) == b && factor_sum(b) == a)
        printf("yes");
    else
        printf("no");

    return 0;
}
发布了221 篇原创文章 · 获赞 40 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/liulizhi1996/article/details/103990673
今日推荐