回溯以生成约束内的所有数字

时间:2015-07-10 23:49:30

标签: python backtracking

我正在尝试创建一个函数,该函数生成所有可以通过质数组合形成的数字,这些素数满足约束在某个数字的99%范围内且小于或等于该数字。 素数是 [2,3,5,7,11,13,17,19,23,29,31,37,41,43] 和指数是 [39,19,9,6,3,3,2,2,1,1,1,1,1,1]

我目前只使用其中一个素数然后停止的代码, 所以像2 ^ 1 * 3 ^ 1 * 5 ^ 1 * ... * 17 ^ 1之类的东西,它并没有增加指数。我不确定这里有什么问题,我不知道问题出在哪里。这是我的代码

def rec(start):
    global freqA
    global A
    global exp
    if start >=length:return True
    print A," ",freqA
    if A>= int(0.99*curt):
        for i in xrange(length):
            exp[i]=exponents[i]-freqA[i]
        rec1(0)

    for i in xrange(exponents[start]):

        freqA[start]+=1
        A*=primes[start]
        if A<=curt and  rec(start+1): return True
        freqA[start]-=1
        A/=primes[start]
return False

1 个答案:

答案 0 :(得分:0)

线

exp[i]=exponents[i]-freqA[i]

不在循环中

以防万一:17! = 355 687 428 096 000

相关问题