import math def fun(n): sum = 1 for i in range(2, int(math.sqrt(n))+1): if n % i == 0: sum += i if i != n // i: sum += n // i if sum == n and n != 1: return 1 else: return0 n = int(input("请输入一个整数:")) if fun(n): print(n, "是完数") else: print(n, "不是完数")
时间: 2024-04-03 21:32:22 浏览: 19
这是一个判断一个整数是否为完数的程序,当输入一个整数 n 后,程序会调用一个名为 fun 的函数,该函数会计算 n 的因子之和并判断是否等于 n,若相等则返回 1,否则返回 0。然后根据函数返回值判断 n 是否为完数并输出相应的结果。其中 math.sqrt() 函数用于计算平方根,range() 函数用于生成一个指定范围内的整数序列。
相关问题
import math def fun(n): sum = 1 for i in range(2, int(math.sqrt(n))+1): if n % i == 0: sum += i if i != n // i: sum += n // i if sum == n and n != 1: return 1 else: return0 n = int(input("请输入一个整数:")) if fun(n): print(n, "是完数") else: print(n, "不是完数")注释
下面是对程序的详细注释:
```python
import math # 导入 math 模块
def fun(n): # 定义函数 fun,用于判断一个整数是否为完数
sum = 1 # 初始化因子之和为 1
for i in range(2, int(math.sqrt(n))+1): # 循环遍历 2 到 sqrt(n) 之间的整数
if n % i == 0: # 若 i 是 n 的因子
sum += i # 将 i 加入到因子之和中
if i != n // i: # 若 i 不是 n 的平方根
sum += n // i # 将 n/i 加入到因子之和中
if sum == n and n != 1: # 若因子之和等于 n 且 n 不等于 1
return 1 # 返回 1,表示 n 是完数
else:
return 0 # 返回 0,表示 n 不是完数
n = int(input("请输入一个整数:")) # 输入一个整数 n
if fun(n): # 若 fun(n) 返回值为 1
print(n, "是完数") # 输出 n 是完数
else:
print(n, "不是完数") # 输出 n 不是完数
```
for i in range(2,int(math.sqrt(n))+1):
这段代码是在判断一个数 n 是否为素数(质数)时使用的循环。循环变量 i 从 2 开始取值,一直到 n 的平方根向上取整(int(math.sqrt(n))+1)为止,每次循环判断 n 能否被 i 整除,如果可以,则跳出循环,说明 n 不是素数;如果循环结束后仍然没有跳出,说明 n 是素数,可以输出。在这段代码中,还有一个另外的循环变量 n,从 1 到 100 取值,用于判断 1-100 中的所有数是否为素数,并统计素数的个数。最后输出所有素数,并输出素数的个数 b。