php 편집기 Apple에서 소수를 빠르게 계산하는 알고리즘인 에라토스테네스의 체를 소개합니다. 이 알고리즘은 소수가 아닌 숫자의 배수를 지속적으로 제외하여 모든 소수를 선별합니다. 소수를 하나씩 판단하는 전통적인 방법에 비해 에라토스테네스의 체 방법은 계산 속도를 크게 높일 수 있습니다. 핵심 아이디어는 2에서 n까지 순회하여 순회가 완료될 때까지 소수 p의 각 배수를 소수가 아닌 숫자로 표시하는 것입니다. 이 방법은 많은 수의 소수를 계산할 때 잘 수행되며 효율적인 소수 계산 알고리즘입니다.
에라토스테네스의 체 알고리즘을 사용하여 소수를 나열하는 함수를 다음과 같이 구현했습니다.
으아악하지만 저는 이것이 비효율적이라고 생각했습니다. 즉, CrossOffMultiples
被调用的次数超出了必要的次数。 IOW,已经被“划掉”的整数将被划掉第二次或第三次(甚至更多次),因为任何多个 m
将有多个因素来划分它。但我似乎无法弄清楚如何利用这一点信息以允许我减少调用 CrossOffMultiples
배. 이 작업을 수행할 수 있는 방법이 있다고 확신하지만 어떤 이유로 인해 그렇게 할 수 없습니다.
제안사항이 있나요?
줄이면 CrossOffMultiples
被调用的次数,即,您不对某些素数 p
调用它,则 p * p
不会被划掉。但你可以做的是从 p * p
而不是 2 * p
사이클을 시작하세요.
숫자를 여러 번 지우는 것은 정상적인 현상입니다. 에라토스테네스의 체는 이렇게 했습니다. Linear Sieve Method는 여러분이 관심을 가질 만한 유사한 알고리즘입니다. p>
위 내용은 에라토스테네스의 체: '교차' 단계 가속화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!