我有一个任务,我需要在Python中找到包含超过65个素数的最低Collatz序列.
例如,19的Collatz序列是:
19,58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
该序列包含7个素数.
我还需要使用memoization,因此它不必运行"年"来找到它.我找到了Collatz序列记忆的代码,但是当我只需要素数时,我无法弄清楚如何让它工作.
这是我发现的Collatz记忆代码:
lookup = {}
def countTerms(n):
if n not in lookup:
if n == 1:
lookup[n] = 1
elif not n % 2:
lookup[n] = countTerms(n / 2)[0] + 1
else:
lookup[n] = countTerms(n*3 + 1)[0] + 1
return lookup[n], n
Run Code Online (Sandbox Code Playgroud)
这是我的素数测试员:
def is_prime(a):
for i in xrange(2,a):
if a%i==0:
#print a, " is not a prime number"
return False
if a==1:
return False
else:
return True
Run Code Online (Sandbox Code Playgroud)