所谓亲密数是指正整数a的因数和是b,而b的因数和是a,且a和b不相等,则称a和b是亲密数。输入n,请将1-n之间的所有亲密数输出且不重复。
时间: 2023-05-01 21:02:49 浏览: 89
题目大意:一个正整数a的因数和为b,另一个正整数b的因数和为a,且a和b不相等,则称a和b是亲密数。输入n,输出1-n之间的所有亲密数。
解题思路:首先需要写一个求因数和的函数,用于判断亲密数。然后遍历1-n,对于每一个数a,求出它的因数和b,再求出b的因数和是否等于a,若相等,则a和b是亲密数。注意不能重复输出,需要使用一个列表保存已经输出的亲密数。
代码实现:
```python
def sum_divisors(n):
"""求因数和的函数"""
divisors = []
for i in range(1, n):
if n % i == 0:
divisors.append(i)
return sum(divisors)
n = int(input("请输入n: "))
ints = []
for i in range(1, n+1):
if i not in ints: # 不能重复输出
a = i
b = sum_divisors(a)
if a != b and sum_divisors(b) == a:
print("亲密数:{}, {}".format(a, b))
ints.extend([a, b])
```
阅读全文