问题:如果整数 A 的全部因子(包括 1 不包括 A 本身)之和等于 B,B 的全部因子(包括 1 不包括 B 本身)之和等于 A,则称 AB 是一对亲密数,求 3000 以内全部的亲密数
算法思路:
先求出一个数(假设为n)的全部因子数之和(假设为a),如果他(a)的全部因子数之和是他本身(n)的话,它便是亲密数,
def yinZi(n):#求n的所有因子之和
sum=0;
for i in range(1,n):
if n%i==0:
sum+=i
return sum
for i in range(1,3001):
a=yinZi(i)#i(A)的全部因子之和,在这里假设存在亲密数b,求b的因子数
b=yinZi(a)#B的因子之和
if i==b:#如果A等于B的因子之和,便是亲密数
print(i,a)
如果感觉不错的话,点个赞哦。