假設我們有一個函數: 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
提交
取消