. 如果有两个数的所有真因子之和等于彼此,这样的两个数称为亲密数。例如, 有两个数 a 和b,a的所有真因子之和等于b, 而b的所有真因子之和正好等于a, 则a和b就是一对亲密数。请编写一个程序查找出 10000 以内的所有亲密数。
时间: 2024-09-12 12:12:12 浏览: 39
在编程中,寻找亲密数可以通过以下步骤实现:
1. 遍历1到10000之间的所有整数。
2. 对于每个整数a,计算其所有真因子(即除了a本身以外的所有因子)之和。
3. 判断该真因子之和是否为另一个整数b,且b也在1到10000之间。
4. 若存在这样的b,并且b的真因子之和等于a,则a和b构成一对亲密数。
5. 输出所有找到的亲密数对。
以下是一个简单的Python程序示例,用于查找10000以内的所有亲密数:
```python
def sum_of_divisors(n):
"""计算除了自身外的所有真因子之和"""
sum = 1
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
sum += i
if i != n // i:
sum += n // i
return sum
def find_amicable_numbers(limit):
"""查找小于limit的所有亲密数"""
amicable_pairs = []
for num in range(2, limit):
sum_div = sum_of_divisors(num)
if sum_div > num and sum_of_divisors(sum_div) == num:
amicable_pairs.append((num, sum_div))
return amicable_pairs
amicable_numbers = find_amicable_numbers(10000)
for pair in amicable_numbers:
print(f"{pair[0]} 和 {pair[1]} 是一对亲密数")
```
当你运行这段代码时,它会输出10000以内所有的亲密数对。
阅读全文