键盘输入N,N在2至2000之间,求2至N中的亲密数对。
就是A的(去掉1和自己的)因子和等于B,B的(去掉1和自己)因子和等于A,且A≠B。
如48和75是亲密数对。
48的因子和为2+3+4+6+8+12+16+24=75,
而75的因子和为3+5+15+25=48。
输入
200
输出
48 75
75 48
140 195
195 140
下面的程序对了一半
def sum_of_factors(num):
total = 0
for i in range(2, int(num/2) + 1):
if num % i == 0:
total += i
return total
def find_amicable_numbers(n):
result = []
for i in range(2, n+1):
a = i
b = sum_of_factors(i)
if a != b and sum_of_factors(b) == a:
result.append((a, b))
return result
def main():
n = int(input())
amicable_numbers = find_amicable_numbers(n)
for pair in amicable_numbers:
print(pair[0], pair[1])
if __name__ == "__main__":
main()