我的代码运行非常慢,我怎样才能使它更快



我写这段代码是为了查看哪些数字具有条件a**4 + b**4 + c**4 = d**4

但是我输入的代码非常慢。你有什么建议可以加快速度吗?

(我知道这段代码不适合Python语言,但要求我用我知道的语言优化这段代码)

import math
import datetime

def main():
t = datetime.datetime.now()
for a in range(1, 100000):
a = pow(a, 4)
for b in range(1, 300000):
b = pow(b, 4)
for c in range(1, 500000):
c = pow(c, 4)
d = (a + b + c) ** 0.25
separated_num = math.modf(d)
if separated_num[0] == 0:
if a + b + c == d:
print(f"a = {a}, b = {b}, c = {c}, d = {d}, time = {datetime.datetime.now() - t}, ", end='')

撇开数学和可行性不谈,这里有一个O(n^2)的方法来优化你的O(n^3)的解决方案。

MAX_VAL = 660000
dp = []
two_sums = []
two_diffs = {}
for i in range(MAX_VAL):
dp.append(i**4)
for i in range(2,MAX_VAL):
for j in range(1,i):
two_sums.append((dp[i]+dp[j], j, i))
two_diffs[dp[i]-dp[j]] = (j,i)
for val in two_sums:
if val[0] in two_diffs:
a,b = val[1], val[2]
c,d = two_diffs[val[0]]
if a+b+c == d:
print(a,b,c,d)

最新更新