大家好,欢迎来到IT知识分享网。
题目链接
https://www.dotcpp.com/oj/problem1157.html
题目描述
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给定的两个数是否是亲和数
输入
输入数据第一行包含一个数M,接下有M行,每行一个实例,包含两个整数A,B; 其中 0 <=A,B <= ;
输出
对于每个测试实例,如果A和B是亲和数的话输出YES,否则输出NO。
样例输入
2
220 284
100 200
样例输出
代码
C:
#include <stdio.h> int main() { int a, b, suma, sumb, i, j, m; scanf("%d", &m); for (i = 1; i <= m; i++) { scanf("%d", &a); scanf("%d", &b); suma = 0; for (j = 1; j < a; j++) { if (a % j == 0) { suma += j; } } sumb = 0; for (j = 1; j < b; j++) { if (b % j == 0) { sumb += j; } } if (a == sumb && b == suma) { printf("YES\n"); } else { printf("NO\n"); } } }
C++:
#include <iostream> using namespace std; int main() { int a, b, suma, sumb, i, j, m; cin>>m; for (i = 1; i <= m; i++) { cin>>a>>b; suma = 0; for (j = 1; j < a; j++) { if (a % j == 0) { suma += j; } } sumb = 0; for (j = 1; j < b; j++) { if (b % j == 0) { sumb += j; } } if (a == sumb && b == suma) { cout<<"YES"<<endl; } else { cout<<"NO"<<endl; } } return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/151375.html