未知的周期数

时间:2016-11-03 20:27:20

标签: python variables tree cycle

如果我想写n=1

for a1 in range(-10,10,1):
    if 13*a1 == 1:
        print('Success')

如果我想写n=2

for a1 in range(-10,10,1):
    for a2 in range(-10,10,1):
        if 13*a1+27*a2==1:
            print('Success')

如果我想写n=3

for a1 in range(-10,10,1):
    for a2 in range(-10,10,1):
        for a3 in range(-10,10,1):
            if 13*a1+27*a2+37*a3==1:
                print('Success')

等。 n可以是1或2或3 .. 20. n是1到20之间的随机数 如何编写下一个代码:

for a1 in range(-10, 10, 1):
    for a2 in range(-10,10,1):
     ....
        for an in range(-10,10,1): #n is a random number from 1 to 20
            if some_number_1*a1+...+some_number_n*an == 1:
                print('Success')

我尝试寻找解决方案

  1. 也许我们可以使用递归

    def recur(a):
       for a in range(-10,10,1):
          recur(a)
    

    此方法不起作用

  2. 也许我们可以使用列表。 例如,

     list[1]=-10,..., 10
     list[2]=-10,...,10
      ...
     list[n]=-10,...,10
    

    所以我们有矩阵(n,21)。但我不知道如何使用这个矩阵来解决我的问题。

  3. 也许我们需要使用树木,但我从未使用过它们

  4. 也许我可以使用库来解决等式a1*x1+a2*x2+...+an*xn=1,但这并不重要。我想知道如何自己解决这个问题。

1 个答案:

答案 0 :(得分:2)

使用itertools.product

def func(a):
    for i in itertools.product(range(-10, 10), repeat=len(a)):
        if sum(x*y for x, y in zip(i, a)) == 1:
            print("success")