编写子程序,判断一个数是否是完全数。完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
时间: 2024-11-16 15:19:34 浏览: 32
C++计算一定范围内(0~n)的所有完全数(perfect number)
编写一个判断是否为完全数的子程序通常涉及以下几个步骤:
1. 定义一个函数,接收一个整数作为输入。
2. 初始化一个变量 `sum` 用于存储该数的所有真因子之和,初始值设为0。
3. 遍历从1到输入数的平方根,对于每个数i,检查它是否是输入数的因子(输入数除以i是否有余数)。
- 如果i是因子,则将 i 和 `input_num // i`(表示去除i后的商)都加入到 `sum` 中,因为因子对都是成对出现的,例如对于4来说,其因子有1, 2, 4,因子对是1+4=5。
4. 判断 `sum` 是否等于输入数。如果相等,那么这个数就是完全数;否则不是。
5. 返回结果。
以下是Python语言的一个简单示例实现:
```python
def is_perfect_number(n):
if n < 1:
return False
sum_factors = 1
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
# 添加因子和它的另一半
sum_factors += i
if i != n // i: # 非整除则还要加上另一个因子
sum_factors += n // i
return sum_factors == n
# 测试例子
print(is_perfect_number(6)) # 输出:True,因为6的因子有1, 2, 3,它们的和正好是6
```
阅读全文