gpt4 book ai didi

python - 检查字典中的任何键是否匹配任何值

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:22 25 4
gpt4 key购买 nike

我正在尝试解决这个问题:

Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.

For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.

Evaluate the sum of all the amicable numbers under 10000.

我想出了一个字典,其中包含 0 到 9999 的所有数字 x:d(x),如下所示:

sums = {x:sum(alecproduct.find_factors(x))-x for x,y in enumerate(range(10**4))}

其中 alecproduct.findfactors 是我自己的模块中的一个函数,它返回一个数字的所有因数列表

不过,我不确定从这里到哪里去。我试过遍历字典并从每个 k-v 对中创建元组,如下所示:

for k,v in sums.items():
dict_tups.append((k,v))

但我认为这对我没有帮助。关于如何检测是否有任何字典键与任何字典值匹配的任何建议?

编辑 - 我的解决方案基于 6502 的回答:

sums,ap = {x:sum(find_factors(x))-x for x,y in enumerate(range(10**4))}, []

for x in sums:
y = sums[x]
if sums.get(y) == x and x != y:
ap.append(x)

print(ap)
print('\nSum: ', sum(ap))

最佳答案

你的问题几乎已经解决了……把所有的夫妇都赶出去:

for x in my_dict:
y = my_dict[x]
if my_dict.get(y) == x:
# x/y is an amicable pair
...

请注意,每对将被提取两次(x/yy/x)和完全数(除数之和的数字)只有一次;从你的问题文本中不确定 6/6 是否被认为是友好的一对。

关于python - 检查字典中的任何键是否匹配任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54997480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com