判断完数(python)

判断一个正整数是否为完数。完数定义:一个数的所有因子(包括1)之和等于它自身,这个数就是完数。比如6=1+2+3,6是完数。
输入格式:

例如:输入一个正整数 6
输出格式:

输出:
6=1+2+3

代码如下,有帮助的话采纳一下哦!

n = int(input("输入一个正整数: "))
print(str(n)+"="+"1",end="")
for i in range(2,n):
    if(n % i == 0):
        print("+"+str(i),end="")

img

img


def judge_(n):
    return [i for i in range(1, n) if n % i == 0]

n = int(input(">>>"))
res = judge_(n)

if sum(res) == n:
    print(f"{n}是完数,其表达式为:{n}={'+'.join(map(str,res))}")
else:
    print(f"{n}不是完数!")
--result
>>>6
6是完数,其表达式为:6=1+2+3


def function(num: int) -> bool:
    """
    :param num:
    :return:
    """
    arr = []
    for i in range(num + 1):
        for j in range(i + 1, num + 1):
            if i * j == num:
                arr.append(i)
                arr.append(j)
    return 2 * num == sum(arr)


if __name__ == '__main__':
    number = int(input("输入一个数:"))
    if function(number):
        print(number, "是完数")
    else:
        print(number, "不是完数")

n = int(input("输入一个正整数:"))

寻找所有的因式

list = []
for i in range(1, n):
if n % i == 0:
list.append(i)

求和

s = sum(list)

输出结果

list0 = list[:-1]
if n == s:
print(f"{n}=", end = "")
for i in iter(list0):
print( str(i) + "+", end = "")
print(list[-1])
else:
print("输入的不是完数")

img

img

代码:

# 输入数字
n = int(input("请输入一个正整数:"))
# 定义列表存放所有因数
fac = []
# 循环(寻找因数并存放进列表)
for i in range(1, n+1): 
  if n % i == 0:
    fac.append(i)
# 判断是否为完数
s = 0
for j in range(len(fac)-1):
    s += fac[j]
if s == n:
    print('是完数')
else:
    print('不是完数')

运行结果:

img

望采纳。谢谢!