友好数

本文介绍了一种用于判断两个整数是否为友好数的算法。友好数是指两个整数各自的所有真因数之和等于对方数的一种特殊数学关系。文章通过具体的例子解释了友好数的概念,并提供了一个C语言实现的程序代码,该程序能够接收两个整数作为输入,输出它们是否构成友好数对。

算法训练 友好数

  算法训练 友好数  

时间限制: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 ax[10000];

int ay[10000];

int main()

{

int x,y;

scanf("%d %d",&x,&y);

int i;

int jx=0,jy=0;

int sumx=0,sumy=0;

//分别求x和y的所有约数

for(i=1; i<=x/2; i++)

{

if(x%i==0)

{

ax[jx]=i;

jx++;

}

}

for(i=1; i<=y/2; i++)

{

if(y%i==0)

{

ay[jy]=i;

jy++;

}

}

//求两个数的约数和

for(i=0; i<jx; i++)

sumx+=ax[i];

for(i=0; i<jy; i++)

sumy+=ay[i];

if(sumx==y&&sumy==x)

printf("yes\n");

else

printf("no\n");

return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值