python题?

编写程序要求如下(1)编写一个自定义的函数 sumfactor(n)用于返回参数n的所有真因子之和(包含1但不包含n即除自身之外的约数:(2)一个数如果恰好等于它的真因子之和(包含1但不包含自身)这个数就称为“完数“譬如
6=1+2+3,28=1+2+4+7+14496=1+2++8+16+31+62+124+248·调sumfactor用数输出1000以内的所有完数(3)如果有两个数其中任一个数的所有真因子之和正好等于另一个数则称这两个数是友好数譬如,220的真因子之和
1+2+4+5+10+11+20+22+44+55+11=284,284的真因子之和1+2+4+71+142=20则(284,220)是一对友好数调用
sumfactor函数输出3000以内的所有友好数对·输出提示:(284,220)(1210,1184)(2924,2620)重复的友好数对只需保留一

第1个回答  2020-07-12

def sumfactor(n):

sum=0

for i in range(1,n):

if n%i==0:

sum+=i

return sum

for i in range(1,1001):

if i==sumfactor(i):

print(i,end=' ')

print()

print()

a=[]

for i in range(1,3001):

if i==sumfactor(sumfactor(i)) and i!=sumfactor(i):

if not((sumfactor(i),i)in a):

a.append((i,sumfactor(i)))

for i in a:

print(i,end=' ')

本回答被网友采纳