相关疑难解决方法(0)

使用list comprehention查找素数

我试图生成范围x到y的所有素数.我先尝试了一个简单的例子:range(10,11)这意味着检查10是否是素数:
这是我的代码:

prime_list = [x for x in range(10, 11) for y in range(2,x) if x % x == 0 and x % 1 == 0 and x % y != 0]
Run Code Online (Sandbox Code Playgroud)

我知道事情是缺少告诉表达式的选项,x%y != 0应该检查所有y in range (2,x)并且当且仅当所有人都满足这个条件时才返回true.

我们怎么做?

python math list-comprehension

10
推荐指数
1
解决办法
2万
查看次数

Python中的快速素数筛

我一直在使用埃拉托色尼的筛经历素数生成Python和人们吹捧为一个相对较快的选项,例如那些在少数人的解决方案 的答案的一个问题关于Python优化素数代都没有直接的和我在这里简单的实现与效率相媲美.我的实现如下

def sieve_for_primes_to(n):
    size = n//2
    sieve = [1]*size
    limit = int(n**0.5)
    for i in range(1,limit):
        if sieve[i]:
            val = 2*i+1
            tmp = ((size-1) - i)//val 
            sieve[i+val::val] = [0]*tmp
    return sieve


print [2] + [i*2+1 for i, v in enumerate(sieve_for_primes_to(10000000)) if v and i>0]
Run Code Online (Sandbox Code Playgroud)

定时执行返回

python -m timeit -n10 -s "import euler" "euler.sieve_for_primes_to(1000000)"
10 loops, best of 3: 19.5 msec per loop
Run Code Online (Sandbox Code Playgroud)

虽然下面给出了上述链接问题的答案中描述的方法,该方法是python菜谱中最快的

import itertools
def erat2( ):
    D = {  }
    yield 2
    for q in itertools.islice(itertools.count(3), …
Run Code Online (Sandbox Code Playgroud)

python algorithm primes sieve-of-eratosthenes

5
推荐指数
2
解决办法
2万
查看次数