반응형
파이썬에서 소수 (순서대로)를 열거 할 수있는 라이브러리 함수가 있습니까?
해결 방법
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
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python 전역 / 지역 변수 (0) | 2021.02.02 |
---|---|
파이썬 문자열의 유니 코드 문자를 다른 파이썬으로 바꾸는 방법은 무엇입니까? (0) | 2021.02.02 |
파이썬 Compare strings based on alphabetical ordering (0) | 2021.02.02 |
파이썬 Homebrew에서 Python을 심볼릭 링크하는 방법은 무엇입니까? (0) | 2021.02.02 |
파이썬 TypeError : 목록 인덱스는 부동 소수점이 아닌 정수 여야합니다. (0) | 2021.02.02 |
댓글