判断一个正整数是否为完数。完数定义:一个数的所有因子(包括1)之和等于它自身,这个数就是完数。
时间: 2023-05-29 22:01:44 浏览: 382
以下是Python代码实现:
```python
def is_perfect_number(num):
factors = [1]
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
factors.append(i)
if i != num // i:
factors.append(num // i)
return sum(factors) == num
```
该函数接受一个正整数作为参数,返回一个布尔值,表示该数是否为完数。它利用一个列表存储该数的因子(包括1),并计算因子之和,最后判断该和是否等于该数本身即可。其中,range函数的起点为2,因为1已经在factors列表中,而终点取到$\sqrt{n}$即可,后半部分的因子可以通过整除计算得到。
下面是一个简单的测试,分别测试100以内的完数和非完数。
```python
perfect_numbers = [6, 28]
nonperfect_numbers = [10, 15]
for num in perfect_numbers+nonperfect_numbers:
if is_perfect_number(num):
print(num, "是完数")
else:
print(num, "不是完数")
```
输出结果为:
```
6 是完数
28 是完数
10 不是完数
15 不是完数
```
阅读全文