gpt4 book ai didi

python - 寻找 3 个函数的共同输出

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

我有3个函数。它们是

A(n) = n(n+1)/2
B(n) = n(3n-1)/2
C(n) = n(2n-1)

他们的第一个共同输出和索引是:

A(285)=B(165)=C(143)=40755

我需要第二个,所以我尝试了这个:

 def equation1(x):
return x*(x+1)/2

def equation2(x):
return x*((3*x)-1)/2

def equation3(x):
return x*((2*x)-1)

for i in range(144,30000):
x = equation3(i)
for a in range(i,2*i):
y = equation2(a)
if(x==y):
for b in range(a,2*a):
z = equation1(b)
if(x==y==z):
print("Term =" + str(x))
print("A" + str(b))
print("B" + str(a))
print("C" + str(i))

但是找到它需要花费太多时间。我怎样才能以更简单的方式处理这个问题?

最佳答案

由于所有三个函数都针对正值递增,因此您可以编写一个循环,在每次迭代时递增具有最小值的数字:

a = b = c = 1
eq_a = equation1(a)
eq_b = equation2(b)
eq_c = equation3(c)

while True:
if eq_a == eq_b and eq_b == eq_c:
print("Found {}, {}, {}, result={}".format(a,b,c,eq_a))
if eq_a <= eq_b and eq_a <= eq_c:
a += 1
eq_a = equation1(a)
elif eq_b <= eq_a and eq_b <= eq_c:
b += 1
eq_b = equation2(b)
elif eq_c <= eq_a and eq_c <= eq_b:
c += 1
eq_c = equation3(c)
else:
print("Should never be here")
assert(False);

测试运行:

Found 1, 1, 1, result=1
Found 285, 165, 143, result=40755
Found 55385, 31977, 27693, result=1533776805
Found 10744501, 6203341, 5372251, result=57722156241751

关于python - 寻找 3 个函数的共同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895445/

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