问题描述
如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以内的全部亲密数。
问题分析
拆分问题为:
(1)计算整数A(或B)全部因子之和;
(2)寻找满足条件的亲密数后输出。
问题(1):构造sumElem()函数计算并返回整数因子之和;
问题(2):使用枚举法先定义变量A,后将变量A的因子之和赋值给变量B,判断变量B的因子之和是否等于变量A,若为真,则输出。
代码
def sumElem(n):
sum=0
for i in range(1,n):
if(n%i==0):
sum+=i
return sum
def main():
n=eval(input())
for a in range(1,n):
b=sumElem(a)
if (sumElem(b)==a and a<b):
print(f"{a} {b}")
main()