#4304. C++ L12 亲和数
C++ L12 亲和数
🧾 C++ L12 亲和数
📌【题目描述】
在遥远的古代,人们发现某些自然数之间有特殊的关系:
如果两个正整数 a 和 b,满足:
a的所有真因子(即除a本身外能整除a的正整数)的和为bb的所有真因子的和为a
那么就称这对数字 (a, b) 是一对 **亲和数(Amicable Numbers)**。
例如:
a = 220,真因子为:1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110,和为284b = 284,真因子为:1, 2, 4, 71, 142,和为220→ 所以(220, 284)是亲和数。
📥【输入格式】
- 第 1 行:一个正整数
n(1 ≤ n ≤ 100),表示后续测试数据组数; - 接下来
n行:每行两个不超过2,000,000的正整数a和b,中间用空格分隔。
📤【输出格式】
输出共 n 行,每行一个整数:
- 若对应输入对
(a, b)为亲和数,输出1 - 否则输出
0
🎯【输入样例】
2
220 284
22 28
✅【输出样例】
1
0
💡【提示说明】
- 需要实现一个函数
sum_of_proper_divisors(x)来求出x的所有真因子之和; - 判断:若
sum(a) == b且sum(b) == a,则为亲和数; - 合理控制遍历范围(建议枚举到 √x)
🧪【时间与空间限制】
| 时间限制 | 空间限制 |
|---|---|
| 1 秒 | 1024 KiB |