杭电-亲和数

来源:互联网 发布:淘宝卖家开通直播条件 编辑:程序博客网 时间:2024/05/01 17:26
亲和数
Input
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <= A,B <= 600000 ;
 

Output
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
 

Sample Input
2220 284100 200
 

Sample Output
YESNO
题意:因为每次输入的两个数满足一个条件,所以输出“YES”,否则输出“NO”;
满足的条件:220的约数1,2,4,5,10,11,22,44,55,110,然后用小脑袋算算它们的和是多少——刚好是284,同样284的约数1,2,4,71,142,它们的和是多少-刚好是220,这不是巧合,据说,毕达哥拉斯(Pythagoras, 希腊文Πυθαγόρας,约前580年—前500年)的一个门徒向他提出这样一个问题:“我结交朋友时,存在着数的作用吗?”毕达哥拉斯毫不犹豫地回答:“朋友是你的灵魂倩影,要象220和284一样亲密。”又说“什么叫朋友?就象这两个数,一个是你,另一个是我。”后来,毕氏学派宣传说:人之间讲友谊,数之间也有“相亲相爱”。从此,把220和284叫做“亲和数”或者叫“朋友数”或叫“相亲数”。这就是关于“亲和数”这个名称来源的传说。220和284是人类最早发现,又是最小的一对亲和数。还有2620,2924和3030,5564也是亲和数。
以下是我的代码:
#include <stdio.h>int main(){    int n,a,b,p,q;scanf("%d",&n);while(n--){scanf("%d%d",&a,&b);p=0;for(int i=1;i<a;i++){if(a%i==0)p=p+i;}    q=0;for(int j=1;j<b;j++){if(b%j==0)q=q+j;}if(a==q&&b==p)printf("YES\n");else printf("NO\n");}return 0;}

0 0
原创粉丝点击