Python 回溯以生成约束内的所有数字
我试图创建一个函数,生成所有可以通过素数组合形成的数,这些素数满足在某个数的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之类,它不会增加指数。我不确定这里出了什么问题,我不知道问题出在哪里。这是我的密码Python 回溯以生成约束内的所有数字,python,backtracking,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):
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
def rec(启动):
全球频率
全球A
全球经验
如果开始>=长度:返回真值
打印一个“”,频率
如果A>=int(0.99*curt):
对于X范围内的i(长度):
exp[i]=指数[i]-freqA[i]
记录1(0)
对于x范围内的i(指数[开始]):
freqA[start]+=1
A*=素数[开始]
如果A线
不在循环中
以防万一:17!=355 687 428 096 000什么是17!应该是什么意思?我改了,但还是不起作用。
exp[i]=exponents[i]-freqA[i]