python编程,判断一个数是否是完数。 完数,一般指完全数,一个自然数如果它的所有真因子(即除了白身以外的约数)的和等于该数,那么这个数就是完全数, 如:6的真因子有1、2、3,6=1+2+3,所以6是-个完全数。
时间: 2024-10-18 12:22:33 浏览: 53
在Python中,可以编写一个函数来检查一个数是否是完全数。下面是一个简单的实现方法:
```python
def is_perfect_number(n):
def sum_of_divisors(num):
divisors_sum = 1 # 包含1作为默认项
for i in range(2, int(num ** 0.5) + 1): # 只需检查到sqrt(n)
if num % i == 0: # 如果i是num的因子
divisors_sum += i # 加入因子和
if (num // i) != i: # 如果因子不是另一个因子的两倍(例如对于4, 它有两个因子2,但只添加一次)
divisors_sum += num // i # 添加另一个因子
return divisors_sum
if sum_of_divisors(n) == n:
return True # 如果所有真因子之和等于n,它是完全数
else:
return False # 否则,不是完全数
# 测试函数
print(is_perfect_number(6)) # 输出:True
print(is_perfect_number(28)) # 输出:True
print(is_perfect_number(12)) # 输出:False
```
此函数首先定义了一个内部辅助函数 `sum_of_divisors` 来计算给定数字的所有因子之和。然后,主函数 `is_perfect_number` 检查这个和是否等于原数。
阅读全文