判断该数是否完数。所谓完数(perfet mumber),是一些特殊的自然数,它所有的真因子(除了自身以外的约数)的和,恰好等于它本身。如6=1+2+3,所以6是完数。要求定义一个函数,用来判断某个整数是否为完数,是完数则函数返回1,否则返回0。最后在主程序中测试该函数。
时间: 2024-12-18 09:22:44 浏览: 12
判断一个数是否为完数,可以编写一个名为`isPerfectNumber`的函数,步骤如下:
1. 定义函数`isPerfectNumber`,接收一个整数作为参数`n`。
2. 初始化变量`s`为0,用于存储`n`的所有真因子之和。
3. 使用循环遍历从1到`sqrt(n)`(因为如果有一个大于sqrt(n)的因子,那么必然存在一个小于sqrt(n)的因子配对,不需要额外检查),对于每个数i,检查`n`除以i的余数是否为0,如果是,则说明i是n的因子(包括1):
- 如果i不等于1,将i加到`s`中(因为已经包含了1,所以这里是因子而不是真因子)。
- 再检查`n/i`是否也是因子,如果是,就再次加入`s`,并排除掉`i`(因为我们只需要计算真因子)。
4. 循环结束后,如果`s`等于`n`,说明n是一个完数,返回1;否则,返回0。
下面是一个简单的Python实现示例:
```python
import math
def isPerfectNumber(n):
if n <= 1:
return 0
sum_of_factors = 1 # Include 1 as a factor
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
sum_of_factors += i
if i != n // i: # If not a square number, also add the other factor
sum_of_factors += n // i
return sum_of_factors == n
# 主程序测试
nums_to_check = [6, 28, 496]
for num in nums_to_check:
result = isPerfectNumber(num)
print(f"{num} 是完数吗? {result} (预期1表示是,0表示不是)")
#
阅读全文