4、输入一个数,判断它是否是完数?(所谓完数是指,除自己本身以外的因子之和 等于它本身。因子是指能整除的数)如:6=1+2+3,因此6是完数
时间: 2024-12-12 18:18:52 浏览: 52
完数也被称为完美数,是一个正整数,其所有小于它的正因数(除了自身外)加起来的和正好等于这个数本身。例如,6是完数,因为1加2加3的和等于6。判断一个数n是否是完数的算法通常包括以下步骤:
1. 定义一个函数,接收一个整数作为参数。
2. 初始化一个变量sum,用于存储n的所有因数之和,初始值设为0。
3. 遍历从1到sqrt(n)(因为大于sqrt(n)的因子会有一个对应于它们的配对因子小于sqrt(n)),如果n能够被当前遍历到的数整除,则将这个数和n除以该数的结果都加入到sum中,注意后者不需要重复计数。
4. 如果n本身就是1,那么1也是它的因数,所以需要特别处理sum的情况。
5. 检查sum是否等于n,如果相等,那么n就是完数;如果不相等,那么n就不是完数。
下面是一个简单的Python代码示例:
```python
def is_perfect_number(num):
if num <= 1:
return False
sum_of_factors = 1
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
sum_of_factors += i
if i != num // i: # 如果i不是另一个因子(即num/i),再加一次
sum_of_factors += num // i
return sum_of_factors == num
# 测试完数
print(is_perfect_number(6)) # 输出:True
```
阅读全文