如果正整数等于其所有正除数之和,则称为完美数, 排除自己。例如,6是第一个完美数,因为6=3+2+1。下一个是 28=14+7+4+2+1. 有四个小于10000的完美数。编写一个程序来查找这些 四个数字。
时间: 2024-10-22 18:10:48 浏览: 21
完美数是一个正整数,它等于所有正因子(包括1但不包括本身)之和。寻找小于某个给定数值的所有完美数是一种常见的数学挑战。为了编写这样一个程序,你可以按照以下步骤设计:
1. 定义一个函数 `is_perfect_number(n)`,检查一个数 `n` 是否是完美数。这个函数需要遍历从1到 `sqrt(n)` 的所有整数i,并检查 `n % i == 0`,如果是,则将 `i` 和 `n / i` 都加入到和中并去除重复。
```python
import math
def is_perfect_number(n):
if n < 1 or not isinstance(n, int):
return False
divisors_sum = sum(i for i in range(1, int(math.sqrt(n)) + 1) if n % i == 0)
return divisors_sum == n and n != 1 # 不包含n自身,且总和等于n
```
2. 创建一个空列表 `perfect_numbers`,用于存储找到的完美数。
3. 使用一个循环,从2开始迭代,直到达到10000,对每个数调用 `is_perfect_number` 函数,如果返回True,则添加到 `perfect_numbers` 列表中。
```python
perfect_numbers = []
for num in range(2, 10001):
if is_perfect_number(num):
perfect_numbers.append(num)
```
4. 打印出完美的前四个数。
```python
if len(perfect_numbers) >= 4:
print("小于10000的四个完美数是:")
print(perfect_numbers[:4])
else:
print("小于10000的完美数少于4个。")
```
阅读全文