【亲和数】

【亲和数】而 284 的所有真约数为 1 2 4 71 142 加起来恰好为 220

大家好,欢迎来到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

(0)
上一篇 2025-03-13 22:20
下一篇 2025-03-13 22:25

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信