所谓亲密数就是如果整数A的全部因子(包括1,不包括A本身)之和等于B,且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称为亲密数。那么请求出5000以内的全部亲密数。
下面直接上代码:
########################
if __name__=="__main__":
print("5000以内的全部亲密数为:")
for a in range(1, 5000): # 穷举5000以内的全部整数
b = 0
i = 1
while i <= (a//2): # 计算数 a 的各因子,将各因子之和存放到b中
if a % i == 0:
b += i
i += 1
n = 0 # 计算b的各因子,将各因子之和存于 n
j = 1
while j <= (b//2):
if b % j == 0:
n += j
j += 1
if n == a and a < b:
print("%4d -- %4d \t" %(a, b))
########################
执行结果如下:
5000以内的全部亲密数为:
220 -- 284
1184 -- 1210
2620 -- 2924
________________END______________
网友评论