【发布时间】:2022-01-10 20:19:02
【问题描述】:
我开发了一个函数,它可以找到任何给定数字的因数并将它们成对显示。我现在想检查是否至少有两对因子,其中一对的总和等于另一对的差。对是一个特定数字的因数。例如,数字 6 可以作为 2+3 = 6-1。我不确定如何在不导入的情况下启动代码。我已经包含了用于查找因子对的代码。
编辑:下面的用户提供了解决方案;但是,有没有一种方法可以让他的解决方案解决更多对而不是仅对 2 对?例如,数字 84 就是这些数字之一;但是,当它通过他的解决方案时,没有任何输出。
def Factors(value):
factors = []
for i in range(1, int(value**0.5)+1):
if value % i == 0:
factors.append((i, value // i))
return factors
【问题讨论】:
-
@RiccardoBucco: 6*2 6.
-
我主要关注直接达到6的两个因素。6和2等于12而不是6。
-
inefficient 方法是让嵌套循环遍历所有因子对对,以便您可以测试每个因子对的条件。更好的方法是构建一个字典,其键是数字,每个键的值是对的列表,其对总和为该值,对差异做同样的事情;我会让你从那里弄清楚。
-
谢谢你,我将以此为基础!
-
@JunirOkoc 如果您在我的解决方案中输入 84(即,如果是
x == 84),那么您会得到(3, 28) (4, 21),而不是像您说的那样。还有,Factors(84) == [(1, 84), (2, 42), (3, 28), (4, 21), (6, 14), (7, 12)]: 应该输出哪些对???
标签: python