본문 바로가기
파이썬

파이썬 소수를 나열하는 Python 라이브러리가 있습니까?

by º기록 2021. 2. 2.
반응형

파이썬에서 소수 (순서대로)를 열거 할 수있는 라이브러리 함수가 있습니까?


 

해결 방법

 


import gmpy2

def primes():
    n = 2
    while True:
        yield n
        n = gmpy2.next_prime(n)

소수를 반복적으로 검색하는 경우 합리적인 제한 (예 : 1,000,000) 미만의 모든 소수 테이블을 만들고 재사용하는 것이 더 빠릅니다. 다음은 gmpy2와 에라토스테네스의 Sieve를 사용하여 소수 테이블을 만드는 또 다른 예입니다. primes2 ()는 먼저 테이블에서 소수를 반환 한 다음 next_prime ()을 사용합니다.

import gmpy2

def primes2(table=None):

    def sieve(limit):
        sieve_limit = gmpy2.isqrt(limit) + 1
        limit += 1
        bitmap = gmpy2.xmpz(3)
        bitmap[4 : limit : 2] = -1
        for p in bitmap.iter_clear(3, sieve_limit):
            bitmap[p*p : limit : p+p] = -1
        return bitmap

    table_limit=1000000
    if table is None:
        table = sieve(table_limit)

    for n in table.iter_clear(2, table_limit):
        yield n

    n = table_limit
    while True:
        n = gmpy2.next_prime(n)
        yield n

필요에 맞게 table_limit를 조정할 수 있습니다. 값이 클수록 더 많은 메모리가 필요하고 primes ()의 첫 번째 호출에 대한 시작 시간이 증가하지만 반복 호출의 경우 더 빠릅니다.

참고 : 저는 gmpy2의 관리자입니다.

 

참조 페이지 https://stackoverflow.com/questions/13326673

 

 

반응형

댓글