i
이 0이 0 % 0
을하고있는 루프 주위에 처음이다 이는 제로 에러에 의한 결과를 초래한다.
귀하의 기능이 무엇을하려고하는지에 대해서는 잘 모르겠습니다. 나는 여기에 소수와 관련된 많은 것을 보지 못했다. n
미만의 모든 짝수를 찾는 것입니다.
는의가
if
테스트를 살펴 보자 :
if ((i % 2 == 0) && (i % i == 0))
두 번째 부분, i % i == 0
항상 너무 오래 i
이 0
가 아니므로 true가됩니다. 그래서 그 부분은 가짜입니다. i % 2 == 0
은 i
이 짝수인지 여부를 간단히 테스트합니다.
실제로 의도하는 코드는 무엇입니까? 숫자가 소수인지 아닌지 테스트하려고합니까? 그렇다면, 가장 간단한 방법은 다음과 같이이다 :
static bool isPrime(int n)
{
Debug.Assert(n>0);
for (int i=2; i<n; i++)
if (n % i == 0) // n is exactly divisible by i, so n is not prime
return false;
return true; // we could not find a factor, so n must be prime
}
당신이 현재 코드 출력하지 번호 Console.WriteLine
에 전화가 아주 정확하지 않기 때문에 할 수 있습니다. 당신은 다음을 의미합니다 :
다른 점은 사용자 코드 버전이 소수 테스트를 I/O 코드와 섞 었다는 것입니다. 하나의 커다란 루틴으로 모든 것을 함께 사용하면 코드를 이해하고 디버깅하는 것이 더 어려워집니다. 여기에 설명 된 것처럼 소수 테스트를 별도의 함수로 분할하면 정확성을 더 쉽게 확인할 수 있습니다. 그것이 맞다는 것을 알게되면 IO 코드에서 사용할 수 있습니다. 그런 다음 IO 코드를 올바르게 수정하는 데 집중할 수 있습니다.
Console.Write("Enter your number: ");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("The prime numbers are:");
for (int i = 1; i <= n; i++)
if (isPrime(i))
Console.WriteLine(i);
Console.ReadLine();
'i % i'는 항상 (i> 0에 대해) 0이므로, 후자의 조건은 동어 반복이다. –
어쨌든 환자 ** [UR 번호] (http://www.rch.org.au/rchhis/requests/index.cfm?doc_id=1863) **가 우연히 소수 일 수있는 기회는 무엇입니까? – sehe
프라임 번호를 찾으려면 시브 오브 에라토스테네스를 사용할 수 있습니다. –