Long 변수의 소수 식별 문제 해결
한 사용자가 긴 변수 내에서 소수를 식별하려고 할 때 출력 문제를 보고했습니다. 원래 프로그램에는 올바른 결과를 방해하는 결함이 있었습니다.
문제 분석
주요 오류는 잘못된 루프 변수 초기화로 인해 발생했습니다. 외부 루프의 조건(i <= num
)이 비효율적이어서 프로그램이 무기한 실행되거나 잘못된 결과가 생성될 가능성이 높습니다.
향상된 코드
아래는 이러한 문제를 해결하고 주어진 범위 내에서 소수를 효율적으로 찾는 수정된 프로그램입니다.
<code class="language-csharp">using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PrimeNumberFinder { class Program { static void FindPrimes(long num) { bool isPrime; for (long i = 2; i <= num; i++) { isPrime = true; for (long j = 2; j * j <= i; j++) { if (i % j == 0) { isPrime = false; break; } } if (isPrime) { Console.WriteLine(i); } } } static void Main(string[] args) { Console.WriteLine("Enter a number:"); long inputNum; if (long.TryParse(Console.ReadLine(), out inputNum)) { FindPrimes(inputNum); } else { Console.WriteLine("Invalid input. Please enter a valid long integer."); } } } }</code>
성능 향상
이 개선된 코드는 더 나은 성능을 제공하여 O(n log log n) 시간 복잡도에 접근하므로 더 넓은 범위의 숫자에 적합합니다. 내부 루프 조건(j * j <= i
)이 핵심 최적화입니다.
위 내용은 내 프로그램이 긴 변수 내에서 소수를 찾지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!