相关疑难解决方法(0)

Python中的生成器生成素数

我需要在Python中使用生成器生成素数.这是我的代码:

def genPrimes():
    yield 2
    x=2
    while True:
        x+=1
        for p in genPrimes():
            if (x%p)==0:
                break
        else:
            yield x
Run Code Online (Sandbox Code Playgroud)

我有一个RuntimeError:当我运行它时,在第二个prime.next()之后超出了最大递归深度.

python primes generator

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

蟒蛇素数Eratosthenes的筛子

您好,有人能告诉我如何在此代码中实现Eratosthenes筛选以使其快速?如果你能用筛子完成它,将非常感谢帮助.在这个特定的代码中,我真的遇到了麻烦.

#!/usr/bin/env python
import sys

T=10 #no of test cases
t=open(sys.argv[1],'r').readlines()

import math
def is_prime(n):
    if n == 2:
        return True
    if n%2 == 0 or n <= 1:
        return False
    sqr = int(math.sqrt(n)) + 1
    for divisor in range(3, sqr, 2):
        if n%divisor == 0:
            return False
    return True

#first line of each test case
a=[1,4,7,10,13,16,19,22,25,28]
count=0
for i in a:

    b=t[i].split(" ")
    c=b[1].split("\n")[0]
    b=b[0]

    for k in xrange(int(b)):
        d=t[i+1].split(" ")

        e=t[i+2].split(" ")
        for g in d:
            for j …
Run Code Online (Sandbox Code Playgroud)

python performance primes

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

用 Python 理解埃拉托斯特尼筛法

我在 python 中找到了一个示例代码,它给出了最多的所有素数n,但我就是不明白,为什么它会这样做?

我读过关于埃拉托斯特尼筛法的维基百科文章,但根本不知道它是如何工作的。

pp = 2
ps = [pp]
lim = raw_input("Generate prime numbers up to what number? : ")
while pp < int(lim):
    pp += 1
    for a in ps:
        if pp%a==0:
            break
        else:
            ps.append(pp)


print set(ps)
Run Code Online (Sandbox Code Playgroud)

对循环如何工作的解释将不胜感激。

编辑- 发现代码都是错误的,因为它表示 25 作为素数,通过更深入的搜索发现这不是筛子,有人可以展示一个利用 python 中的筛子的生成器并解释它

python primes sieve-of-eratosthenes

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

打印Prime数字从2到1000

我正在编写一个代码,在一个名为primes.txt的文件中写入2到1000之间的所有素数.出于某种原因,我无法找出解决此问题的正确方法.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;

public class Problem6 {

    /**
     * @param args
     * @throws FileNotFoundException 
     */
    public static void main(String[] args) throws FileNotFoundException {
        PrintWriter prw = new PrintWriter("primes.txt");
        for (int i = 2; i <= 1000; i++){
            if (checkIfPrime(i) == true){
                System.out.println(i);
                prw.println(i);
            }
        }
    }

    public static boolean checkIfPrime (int num){
        boolean isPrime = true;  
        for (int i = 2; i <= 1000; i++){
            if ( num % i == 0 ){
                isPrime = false; …
Run Code Online (Sandbox Code Playgroud)

java methods primes

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

0
推荐指数
1
解决办法
7463
查看次数

如果阵列中的数字太多,则素数生成器会因内存错误而崩溃

我有一个素数生成器,我很好奇看到有多小和我有多快可以让素数生成器基于优化等等:

from math import sqrt
def p(n):  
  if n < 2: return []  
  s = [True]*(((n/2)-1+n%2)+1)  
  for i in range(int(sqrt(n)) >> 1):  
    if not s[i]: continue  
    for j in range( (i**i+(3*i) << 1) + 3, ((n/2)-1+n%2), (i<<1)+3): s[j] = False   
    q = [2]; q.extend([(i<<1) + 3 for i in range(((n/2)-1+n%2)) if s[i]]); return len(q), q  
print p(input())
Run Code Online (Sandbox Code Playgroud)

发电机很棒!它速度超快,可以随意试用.但是,如果您输入的数字大于10 ^ 9或10 ^ 10(我认为),它将从内存错误中崩溃.我无法弄清楚如何扩展它使用的内存,以便它可以占用所需的内存.任何建议将不胜感激!

我的问题与问题非常相似,但这是Python,而不是C.

编辑:这是我尝试运行10 ^ 9时获得的与内存相关的回溯之一.

python prime.py
1000000000
Traceback (most recent call last):
  File "prime.py", line 9, …
Run Code Online (Sandbox Code Playgroud)

python primes generator python-2.7

0
推荐指数
1
解决办法
390
查看次数