什么是相親數?相親數指的是兩個數,如果一個數的所有因子之和等于另一個數,且這個數的所有因子之和又恰好等于第一個數,那么這兩個數就是相親數。
使用Python編程,可以比較輕松地找出相親數。以下是代碼示例:
def sum_divisors(num): # 計算一個數的因子之和 divisors = [1] for i in range(2, int(num ** 0.5) + 1): if num % i == 0: divisors.append(i) if i != num // i: divisors.append(num // i) return sum(divisors) def find_amicable_numbers(n): # 找出小于n的所有相親數 amicable_numbers = [] for i in range(1, n): j = sum_divisors(i) if sum_divisors(j) == i and i != j: amicable_numbers.append((i, j)) return amicable_numbers print(find_amicable_numbers(10000))
在上述代碼中,我們定義了兩個函數。第一個函數sum_divisors
計算一個數的所有因子之和。我們需要先列出這個數的所有因子,再將它們相加。為了優化效率,可以只循環到這個數的平方根。
第二個函數find_amicable_numbers
使用sum_divisors
函數找出小于n的所有相親數。我們循環遍歷每個數i,找到它的因子之和j。如果j的因子之和又等于i,并且i不等于j,那么它們就是一組相親數。
最后,我們調用find_amicable_numbers(10000)
,讓代碼找出小于10000的所有相親數。輸出結果是一個由多個數對組成的列表。