假设我们有一个函数: xa 2 + yb 2 = xc 2 + yd 2。我知道这个等式中的 x 和 y。在不使用任何外部包的情况下,找到该方程的所有可能解的数量的最佳方法是什么:a、b、c 和 d。我不是在这里寻找超大数字,因为 x、y 和 a、b、c、d 的范围都是从 0 到 50。我尝试了唯一想到的事情:四个嵌套循环来查找这些参数它可以工作,但随着数字的增加,它的效率会降低。任何帮助,将不胜感激。
1 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
我不明白什么需要这么长时间;即使是蛮力也可以在一秒钟内完成。
import time
x = 2
y = 5
start = time.time()
for a in range(51):
for c in range(a):
for d in range(51):
for b in range(d):
f = x * (a*a - c*c) - y * (d*d - b*b)
if f == 0:
print(a, b, c, d)
print(time.time() - start)
输出:
6 1 4 3
7 0 3 4
7 3 3 5
8 1 2 5
8 5 2 7
9 2 1 6
9 7 1 9
10 3 0 7
10 9 0 11
11 1 1 7
11 4 1 8
11 11 1 13
11 0 9 4
11 3 9 5
12 5 2 9
...
50 1 40 19
50 9 40 21
50 13 40 23
50 27 40 33
50 43 40 47
1.0240814685821533
添加回答
举报
0/150
提交
取消