배열에 문제가 있습니다. 나는 primeIndex
과 i
변수의 차이를 이해하는 데 문제, 특히두 배열 인덱스를 구별 할 수 있습니까?
#include <stdio.h>
#include <stdbool.h>
int main (void)
{
int p, i, primes[50], primeIndex = 2;
bool isPrime;
primes[0] = 2;
primes[1] = 3;
for (p = 5; p <= 50; p = p + 2) {
isPrime = true;
for (i = 1; isPrime && p/primes[i] >= primes[i]; ++i)
if (p % primes[i] == 0)
isPrime = false;
if (isPrime == true) {
primes[primeIndex] = p;
++primeIndex;
}
}
for (i = 0; i < primeIndex; ++i)
printf ("%i ", primes[i]);
printf ("\n");
return 0;
}
: 나는 책에서이 코드를 복사됩니다. primeIndex
은 배열 번호를 나타내고 i
은 배열에있는 번호를 나타냅니다. 권리?
누구든지이 알고리즘의 이름을 알고 있습니까? – bacchus
'isPrime = false;'를 설정할 때, 'break;'(그리고 중괄호'{...}')를 현명하게 추가하여 루프를 일찍 종료시킬 수 있음에 유의하십시오. –
더 나쁘다 : 부울 (loop invariant + 1/2)'isPrime'은 goto에 의해 제거 될 수 있고, add-to-array는'primes [primeIndex ++] = p;'BTW'p < = 50' 테스트는'primeIndex <50'이어야합니다 – wildplasser