У меня есть этот фрагмент кода, который будет печатать простые числа до экрана.
Например, printPrimes (500000) будет заполнять экран всеми простыми числами до 500000-го (который7368787).
Проблема в том, что передача большего числа, например 600000 или 1000000, приведет к поломке программы.
Есть идеи?Заранее спасибо.
typedef enum {false, true} bool;
bool isPrime(long number, long primes[], long n) {
int divisor, index;
for (index = 0; index < n; ++index) {
divisor = primes[index];
if (divisor * divisor > number) {
return true;
} else if (number % divisor == 0) {
return false;
}
}
return 0;
}
void printPrimes(long n) {
long primes[n];
long odd, index;
primes[0] = 2;
odd = 1;
index = 1;
while (index < n) {
odd += 2;
if (isPrime(odd, primes, n)) {
printf("%ld ", odd);
primes[index] = odd;
++index;
}
}
}