我需要找到该方程式的所有可能解决方案:x+2y = N
,x<100000
和y<100000
。
给定N=10
,说。
我在python中这样做:
for x in range(1,100000):
for y in range(1,100000):
if x + 2*y == 10:
print x, y
如何针对速度优化此参数?我该怎么办?
本质上,这是一个与语言无关的问题。 C / C++答案也有帮助。
最佳答案
Lefteris E的答案是解决方法,
但我确实认为y
应该在[1,N/2]
范围内,而不是[1,2*N]
说明:
x+2*y = N
//replace x with N-2*y
N-2*(y) + 2*y = N
N-2*(N/2) + 2*y = N
2*y = N
//therefore, when x=0, y is maximum, and y = N/2
y = N/2
现在,您可以执行以下操作:
for y in range(1,int(N/2)):
x = N - (y<<1)
print x, y
关于c++ - 寻找线性方程的解集?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15881909/