Python 求亲和数

亲和数(Amicable Numbers)是指两个不同的正整数,它们的真因数(即除去本身的所有因数)之和与对方的数相等。
在这里插入图片描述

def sum_of_proper_divisors(n):
    """计算一个数的真因子之和"""
    divisors_sum = 1  # 1 是所有正整数的因子
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            divisors_sum += i
            if i != n // i:
                divisors_sum += n // i
    return divisors_sum

def find_amicable_pairs(limit):
    """查找所有两个整数都小于给定上限的亲和对"""
    amicable_pairs = []
    for num in range(2, limit):
        partner = sum_of_proper_divisors(num)
        if partner > num and partner < limit and sum_of_proper_divisors(partner) == num:
            amicable_pairs.append((num, partner))
    return amicable_pairs

if __name__ == "__main__":
    limit = 10000
    amicable_pairs = find_amicable_pairs(limit)
    print(f"All amicable pairs below {limit}:")
    for pair in amicable_pairs:
        print(pair)

All amicable pairs below 10000:
(220, 284)
(1184, 1210)
(2620, 2924)
(5020, 5564)
(6232, 6368)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值