小编spø*_*ren的帖子

找到最低的胶合序列,可以提供超过65个素数

我有一个任务,我需要在Python中找到包含超过65个素数的最低Collat​​z序列.

例如,19的Collat​​z序列是:

19,58,29,88,44,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

该序列包含7个素数.

我还需要使用memoization,因此它不必运行"年"来找到它.我找到了Collat​​z序列记忆的代码,但是当我只需要素数时,我无法弄清楚如何让它工作.

这是我发现的Collat​​z记忆代码:

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)

python primes memoization sequence collatz

5
推荐指数
1
解决办法
503
查看次数

标签 统计

collatz ×1

memoization ×1

primes ×1

python ×1

sequence ×1