查找具有特定角色的号码
Finding numbers that have specific roles
我正在尝试查找一个数字是否是普通数字或不使用输入。如果一个正整数至少有两对正整数因子,使得一对之差等于另一对之和,则该正整数是普通整数。
比如6是普通的,因为6×1=6,2×3=6,6−1=2+3;并且 24 也是普通的,因为 12−2=6+4。
我一直在研究如何编写代码,使它 "grabs" 与数字的因数进行特定匹配。
谢谢:)
首先你需要一个方法return一个数字的所有因子对,这个答案提供了一个足够好的解决方案
def f(value):
factors = []
for i in range(1, int(value**0.5)+1):
if value % i == 0:
factors.append((i, value / i))
return factors
现在我们有了所有可能的因子对,我们需要遍历每个排列,看看一对之和是否等于另一对之差。 itertools provides a permutations function 可用于此
def is_special(x):
factor_pairs = f(x)
for p1, p2 in itertools.permutations(factor_pairs, 2):
if p1[1] - p1[0] == p2[0] + p2[1]:
return False
return True
我正在尝试查找一个数字是否是普通数字或不使用输入。如果一个正整数至少有两对正整数因子,使得一对之差等于另一对之和,则该正整数是普通整数。
比如6是普通的,因为6×1=6,2×3=6,6−1=2+3;并且 24 也是普通的,因为 12−2=6+4。 我一直在研究如何编写代码,使它 "grabs" 与数字的因数进行特定匹配。
谢谢:)
首先你需要一个方法return一个数字的所有因子对,这个答案提供了一个足够好的解决方案
def f(value):
factors = []
for i in range(1, int(value**0.5)+1):
if value % i == 0:
factors.append((i, value / i))
return factors
现在我们有了所有可能的因子对,我们需要遍历每个排列,看看一对之和是否等于另一对之差。 itertools provides a permutations function 可用于此
def is_special(x):
factor_pairs = f(x)
for p1, p2 in itertools.permutations(factor_pairs, 2):
if p1[1] - p1[0] == p2[0] + p2[1]:
return False
return True