zhou11119 2023-10-29 18:50 采纳率: 83.7%
浏览 9
已结题

python求亲密数对

键盘输入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()


  • 写回答

2条回答 默认 最新

  • Python-ZZY 2023-10-29 19:32
    关注

    你只考虑了b的因子和等于a,而没有考虑a的因子和等于b。
    第12行改为:

    if a != b and sum_of_factors(b) == a and sum_of_factors(a) == b:
    

    完整代码:

    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 and sum_of_factors(a) == b: ####
                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()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月6日
  • 已采纳回答 10月29日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物