我需要找到该方程式的所有可能解决方案:
x+2y = Nx<100000y<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/

10-10 20:32