지정된 범위 내의 소수를 결정하는 것은 일반적인 프로그래밍 작업입니다. 이 작업에 대한 메모리 소비를 최적화하기 위해 우리는 주어진 범위(1, N]에 대한 소수를 나타내는 가장 컴팩트한 데이터 구조를 생성하는 알고리즘을 찾습니다.
소수 범위 매핑을 위해 제안된 알고리즘
일반 소수 테스트에 가장 효과적인 알고리즘은 AKS 알고리즘입니다. 그러나 제한된 범위 내에서 실용적인 목적을 위해서는 다음과 같은 기존 O(sqrt(N)) 알고리즘 변형이 효율적인 솔루션을 제공할 수 있습니다.
def isprime(n): if n == 2 or n == 3: return True if n % 2 == 0 or n % 3 == 0: return False # Check prime divisors of the form 6k - 1 and 6k + 1 i = 5 w = 2 while i * i <= n: if n % i == 0: return False i += w w = 6 - w return True
알고리즘 분석
이 알고리즘은 3보다 큰 모든 소수가 6k - 1 또는 6k 1 형식이라는 사실에 의존합니다. 이 패턴에서 잠재적인 소인수를 반복함으로써 알고리즘은 소수가 아닌 숫자를 효율적으로 식별합니다.
추가 고려 사항
특히 범위가 제한된 경우 더욱 빠른 속도를 원합니다. , Fermat의 작은 정리를 기반으로 한 의사 소수 테스트를 구현하는 것이 효과적일 수 있습니다. 그러나 이 접근 방식에는 범위 제한이 있습니다.
키 최적화
이 알고리즘은 잠재적인 소수인 모든 짝수를 제거하는 것입니다. 이러한 최적화를 통해 필요한 확인 횟수가 크게 줄어들어 성능이 향상됩니다.
위 내용은 범위 내에서 소수를 효율적으로 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!