在编程的世界里,完数(Perfect Number)是一个非常有趣的数学概念。所谓完数,是指一个数等于其所有真因子(即除了自身以外的正因子)之和。例如,6 是一个完数,因为它的真因子是 1、2 和 3,而 1 + 2 + 3 = 6。
今天我们将用 Python 编写一个简单的程序来找出并输出一定范围内的完数。这个过程不仅能帮助我们理解完数的概念,还能提升我们的编程技能。
步骤解析
首先,我们需要一个函数来判断某个数是否为完数。这可以通过遍历该数的所有可能因子,并将它们相加后与原数进行比较来实现。接着,我们可以使用一个循环来检查指定范围内的所有数字,调用上述函数来筛选出完数。
Python 实现代码
```python
def is_perfect_number(n):
""" 判断一个数是否为完数 """
if n < 2:
return False
sum_of_divisors = 1 1 是每个数的默认因子
sqrt_n = int(n 0.5)
for i in range(2, sqrt_n + 1):
if n % i == 0:
sum_of_divisors += i
if i != n // i: 避免重复添加平方根
sum_of_divisors += n // i
return sum_of_divisors == n
def find_perfect_numbers(start, end):
""" 查找指定范围内的完数 """
perfect_numbers = []
for num in range(start, end + 1):
if is_perfect_number(num):
perfect_numbers.append(num)
return perfect_numbers
示例:查找 1 到 10000 内的完数
perfect_numbers = find_perfect_numbers(1, 10000)
print("1 到 10000 内的完数有:", perfect_numbers)
```
代码说明
1. `is_perfect_number` 函数负责判断单个数是否为完数。我们从 2 开始遍历到该数的平方根,这样可以减少不必要的计算。
2. `find_perfect_numbers` 函数则通过循环遍历给定范围内的所有数,并利用 `is_perfect_number` 函数筛选出完数。
3. 最后,我们测试了 1 到 10000 范围内的完数,并打印出来。
扩展思考
完数的研究历史悠久,早在古希腊时期就被人们所关注。除了完数之外,还有许多类似的数论问题值得探索,比如阿姆斯特朗数、回文数等。通过编程实践,我们可以更直观地理解这些抽象的数学概念。
希望这段代码能够激发你对编程和数学的兴趣!如果你有任何疑问或想了解更多相关内容,请随时留言交流。