> 백엔드 개발 > C++ > 소수 탐지 프로그램이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

소수 탐지 프로그램이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-13 21:47:47
원래의
284명이 탐색했습니다.

Why Does My Prime Number Detection Program Fail, and How Can I Fix It?

잘못된 소수 탐지기 디버깅

long 변수로 정의된 범위 내에서 소수를 식별하도록 설계된 프로그램이 출력을 생성하지 못합니다. 코드를 분석한 결과 두 가지 중요한 결함이 드러났습니다.

  • 끝나지 않는 루프: prime_num() 함수 내의 내부 루프에 결함이 있는 조건(i)이 포함되어 무한 루프가 발생합니다.
  • 잘못된 소수 논리: 소수 확인이 잘못되었습니다. 소수는 1과 자기 자신으로만 나눌 수 있습니다. if (i != j && i % j == 0) 조건은 추가 제수가 있는 숫자를 소수로 잘못 분류합니다.

향상된 소수 찾기 알고리즘

보다 효율적인 솔루션은 "시험 분할 체" 방법을 사용합니다.

<code class="language-csharp">Enumerable.Range(0, Math.Floor(2.52*Math.Sqrt(num)/Math.Log(num))).Aggregate(
    Enumerable.Range(2, num-1).ToList(), 
    (result, index) => { 
        var bp = result[index]; var sqr = bp * bp;
        result.RemoveAll(i => i >= sqr && i % bp == 0); 
        return result; 
    }
);</code>
로그인 후 복사

이 개선된 알고리즘은 근사치를 사용하여 테스트되는 주요 후보 수를 최소화하므로 성능이 크게 향상됩니다.

위 내용은 소수 탐지 프로그램이 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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