1092:练6.8 求亲和数

问题遇到的现象和发生背景

1092:练6.8 求亲和数

时间限制: 1000 ms 内存限制: 65536 KB
提交数: 293 通过数: 201
【题目描述】
自然数a的因子是指能被a整除的所有自然数,但不含a本身。例如12的因子为:1和2或3或4和6。若自然数a的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求最小的一对亲和数(a<>b)。

【输入】
(无)

【输出】
1行,分别为a和b(a < b)。

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
def factor(x):
    s = 0
    for i in range(1, x // 2 + 1):
        if x % i == 0:
            s = s + i
    return s

if __name__ == '__main__':
    a = 2
    while (a):
        b = factor(a)
        if factor(b) == a and a < b:
            print(a, b)
            break
        else:
            a = a + 1

最小是指两个数之和最小吗?

n = 1
while True:
    m = 0
    k = 0
    for i in range(1,n):
        if n%i==0:
            m+=i
    for j in range(1,m):
        if m%j==0:
            k+=j
    if n==k and n!=m:
        print(n,m)
        break
    n = n+1

最小的是 220和284

循环遍历,直到找出一对数据即可

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632