>백엔드 개발 >파이썬 튜토리얼 >Python에서 주어진 숫자 N 아래의 모든 소수를 찾는 가장 빠른 방법은 무엇입니까?

Python에서 주어진 숫자 N 아래의 모든 소수를 찾는 가장 빠른 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-21 09:28:09834검색

What's the Fastest Way to Find All Prime Numbers Below a Given Number N in Python?

N 아래의 모든 소수를 나열하는 가장 빠른 방법

Python에는 주어진 숫자 N 아래의 모든 소수를 나열하는 몇 가지 효율적인 알고리즘이 있습니다. 가장 빠른 알고리즘 중 하나는 체질과 산술 연산의 조합을 사용하여 소수를 식별하는 Sieve of Atkin입니다.

기타 효율적인 알고리즘

Atkin의 체 외에도 소수 나열을 위한 다른 효율적인 알고리즘은 다음과 같습니다.

  • Rho 알고리즘
  • 선다람의 알고리즘
  • AKS 소수성 검정
  • Miller-Rabin 소수성 검정

올바른 알고리즘 선택

최상의 알고리즘 특정 애플리케이션은 N의 크기와 원하는 속도에 따라 달라집니다. N 값이 작은 경우 에라토스테네스의 체는 간단하고 효율적인 선택입니다. 더 큰 N 값의 경우 Sieve of Atkin 또는 위에서 언급한 다른 알고리즘 중 하나가 더 적합할 수 있습니다.

다음은 Sieve of Atkin의 Python 구현입니다.

def sieve_of_atkin(limit):
    """Return a list of prime numbers up to the given limit."""

    # Create a list of all integers up to the given limit.
    numbers = list(range(limit + 1))

    # Mark 0 and 1 as non-prime.
    numbers[0] = numbers[1] = 0

    # Iterate over all odd numbers up to the square root of the limit.
    for i in range(3, int(limit**0.5) + 1, 2):

        # If i is prime, mark all multiples of i as non-prime.
        if numbers[i]:
            for j in range(i * i, limit + 1, i * 2):
                numbers[j] = 0

    # Return the list of prime numbers.
    return [number for number in numbers if number]

추가 고려 사항

  • 더 큰 N 값의 경우 순다람의 체 또는 에라토스테네스의 체와 같은 보다 정교한 알고리즘을 사용하는 데 필요합니다.
  • 알고리즘 선택은 메모리 가용성 및 원하는 정밀도와 같은 다른 요인의 영향을 받을 수도 있습니다.

위 내용은 Python에서 주어진 숫자 N 아래의 모든 소수를 찾는 가장 빠른 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.