> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 간단한 소수 생성기를 어떻게 최적화할 수 있나요?

Python에서 간단한 소수 생성기를 어떻게 최적화할 수 있나요?

Mary-Kate Olsen
풀어 주다: 2024-11-15 09:27:02
원래의
895명이 탐색했습니다.

How Can I Optimize a Simple Prime Number Generator in Python?

Python에서 단순 소수 생성기 최적화

제공된 Python 코드는 소수 생성을 목표로 하지만 효율성을 위해 개선이 필요합니다.

원작 관련 문제 코드:

  1. 루프는 가분성을 확인하지만 제수를 찾은 경우에도 개수를 잘못 인쇄합니다.
  2. continue 문은 현재 반복을 종료하지만 break로 바꿔야 합니다. 제수가 발견되면 검색을 모두 중지합니다.

개선됨 코드:

import math

def main():
    count = 3
    while True:
        isprime = True
        for x in range(2, math.ceil(math.sqrt(count)) + 1):
            if count % x == 0: 
                isprime = False
                break
        if isprime:
            print(count)
        count += 1
로그인 후 복사

설명:

  • 외부 루프는 다음 가능한 소수를 테스트하기 위해 개수를 증가시킵니다.
  • 내부 루프는 이제 카운트의 제곱근까지 실행됩니다. 제곱근보다 큰 제수는 해당하는 값을 갖기 때문입니다. 제곱근 아래의 제수.
  • 카운트가 x로 나누어지면 isprime 플래그가 False로 설정되고 내부 루프가 중단됩니다.
  • 제수가 발견되지 않으면 카운트는 프라임되어 인쇄됩니다.

Advanced Prime 생성:

보다 효율적인 소수 생성을 위해서는 에라토스테네스의 체를 권장합니다. 다음은 주석이 포함된 최적화된 Python 구현입니다.

def gen_primes():
    D = {}
    q = 2
    while True:
        if q not in D:
            yield q
            for later in range(q * q, 1000000, q):
                D[later] = [q]
        else:
            for later in range(q + D[q][0], 1000000, q):
                D.setdefault(later, []).append(q)
            del D[q]
        q += 1
로그인 후 복사

위 내용은 Python에서 간단한 소수 생성기를 어떻게 최적화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿