Python程序以检查两个数字是否是亲和数
更多Python相关文章,请阅读:Python 教程
什么是亲和数?
亲和数指的是两个正整数中,各自所有因子之和与另外一个数相等。比如,数字220和284就是一对亲和数。其中,220的所有因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220。
Python代码实现
Python实现亲和数的判断可以使用以下步骤:
- 输入两个数字;
- 针对每个数字,计算它的因子之和;
- 判断两个因子之和是否相等。
以下是Python实现的样例代码:
def find_divisor_sum(num):
divisor_sum = 0
for i in range(1, num):
if num % i == 0:
divisor_sum += i
return divisor_sum
def is_amicable_number(num1, num2):
if (find_divisor_sum(num1) == num2) and (find_divisor_sum(num2) == num1):
return True
else:
return False
# 测试样例
num1 = 220
num2 = 284
if is_amicable_number(num1, num2):
print("{0}和{1}是一对亲和数。".format(num1, num2))
else:
print("{0}和{1}不是一对亲和数。".format(num1, num2))
以上代码实现了亲和数的判断,并输出了一对亲和数的提示信息。
性能优化
在计算因子之和的时候,可以选择只循环到数字的一半即可,这样可以提高循环效率。
def find_divisor_sum(num):
divisor_sum = 0
for i in range(1, num//2+1):
if num % i == 0:
divisor_sum += i
return divisor_sum
另外,我们可以利用Python内置函数set计算因子,这样可以避免重复计算,从而提高效率。
def find_divisor_sum(num):
divisor_sum = sum(set(sum([i, num//i]) for i in range(1, int(num**0.5)+1) if num % i == 0))
return divisor_sum
结论
我们可以使用Python代码实现亲和数的判断,并且可以根据实际情况优化计算性能。