判断n是否为完数。如果是,则输出Yes和它的所有因子;否则,输出No。
时间: 2024-11-20 18:40:05 浏览: 16
判断一个整数n是否为完全数,需要找到小于等于n的所有正因数(包括1和n本身),然后将这些因子相加,如果这个和正好等于n,那么n就是完全数。以下是算法的基本步骤:
1. 初始化变量sum为1,表示当前已经添加了1作为因子。
2. 遍历从2到sqrt(n)(因为大于sqrt(n)的因子都会有一对相同的因子,比如6的因子有1、2和3,而3已经包含在内)。
a. 如果n能被当前遍历的数整除,那么它就是一个因子,将该因子加入sum,并记录下来。
3. 检查sum是否等于n,若等于则n是完全数,输出"Yes",并列出所有的因子及其乘积;若不等于,则输出"No"。
例如,对于数字6,其因子有1、2、3,它们的和正好是6,所以6是一个完全数。完整的Python代码示例如下:
```python
import math
def is_perfect_number(n):
factors = []
if n <= 1:
return "No"
for i in range(1, int(math.sqrt(n)) + 1):
if n % i == 0:
factors.append(i)
if i != n // i: # 如果i不是n的商,则同时加入n//i
factors.append(n // i)
sum_of_factors = sum(factors)
if sum_of_factors == n:
print(f"Yes, {n} is a perfect number with factors: {factors}")
return True
else:
return f"No, {n} is not a perfect number"
# 示例
print(is_perfect_number(6)) # 输出:Yes, 6 is a perfect number with factors: [1, 2, 3]
```
阅读全文