可爱的菲菲酱 发表于 2020-5-7 22:53:24

完数的真因子和式help

输入正整数n,如果是完数,则输出n的真因子和式。否则输出0.(正整数n的全部真因子之和等于n,则叫做完数)
例:输入:28
      输出:28=1+2+4+7+14
我只会一半,后面的输出怎么搞啊?
num=2
while num<1000:
    A=0
    n=1
    while n<num:
      if num%n==0:
            A+=n
      n+=1
    if A==num:
      print(A)
    num+=1

pupil337 发表于 2020-5-7 23:11:49

输入n 求n是不是完数
先判断它是不是完数,是的话就输出{:10_297:}

txxcat 发表于 2020-5-7 23:16:23

本帖最后由 txxcat 于 2020-5-7 23:53 编辑

你这代码是算1000以内的完数呀,知道怎么算完数,分解就简单了:
num=2
while num<1000:
    b=[]
    A=0
    n=1
    while n<num:
      if num%n==0:
            b.append(str(n))#把因子转为字符加入到列表b
            A+=n
      n+=1
    if A==num:
      print('%d = %s' % (A,'+'.join(b)))       #打印出公式
    num+=1
代码优化:
for num in range(2,1000):
    b=['1']
    A=1
    for n in range(2,num//2+1):
      if num%n==0:
            b.append(str(n))
            A+=n
    if A==num:
      print('%d = %s' % (A,'+'.join(b)))

还是按题目要求写吧:
num=int(input('输入一个整数:'))
b=['1']
A=1
for n in range(2,num//2+1):
    if num%n==0:
      b.append(str(n))
      A+=n
if A==num:
    print('%d = %s' % (A,'+'.join(b)))
else:
    print(0)
页: [1]
查看完整版本: 完数的真因子和式help