完数的真因子和式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 输入n 求n是不是完数
先判断它是不是完数,是的话就输出{:10_297:} 本帖最后由 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]