У меня есть программа, которая генерирует простые числа. Этот код отлично работает, когда мне нужны первые 100 и 200 простых чисел, но выдает исключение с плавающей запятой всякий раз, когда я использую значение выше 300 для общего числа. Проблема похоже в массиве, но я не понимаю, что происходит.
#include<stdio.h>
int main()
{
int total = 500;
int primes[total];
primes[0] = 2;
int max = 1;
int current = 3;
int index = 0;
printf("%d\n",2);
while(max != total)
{
for(index = 0; index <= max + 1; index++)
{
if(index == max + 1){
primes[index] = current;
printf("%d\n",current);
max = max + 1;
current = current + 1;
break;
} else {
if(current % primes[index] == 0){
current = current + 1;
break;
}
}
}
}
}
index <= max + 1
иindex == max + 1
неправильно. - person BLUEPIXY   schedule 05.09.2014current = current + 2;
подходит, так как все четные числа точно не простые; И вы можете заменитьif (index == max + 1)
чем-то вродеif (index == max + 1 || primes[index] * primes[index] > current)
. - person FreeNickname   schedule 05.09.2014for()
index
изменяется от 0 до 2. Когдаindex == 1
выполняется,if(current % primes[1] == 0)
.primes[1]
никогда не инициализировался. - person chux - Reinstate Monica   schedule 05.09.2014