2013-09-18 4 views
3

Вот программа для поиска простых чисел с использованием решета Эратосфена. Программа компилируется, но при выполнении она становится неактивной. Сам оператор печати не выполняется. Могу ли я узнать, где я ошибся?главный метод не выполняется

#include<stdio.h> 
int main() 
{ 
    printf("Enter the range"); 
    int n,i; 
    scanf("%d",&n); 
    int j; 
    int a[--n]; 
    for(i=0;i<n;i++) 
      a[i]=i+2; 
    for(i=0;i<n;i++) 
      if(a[i]) 
      { 
        printf("%d",a[i]); 
        for(j=2;(i*j)<n;j++) 
          a[i*j]=0; 
      } 
    return 0; 
} 

Благодаря

+1

"решето Эратосфена"? что это? – Raptor

+2

отладчики великолепны! –

+0

Попробуйте просто ввести номер в свою программу и нажать на возврат. Не забудьте завершить вывод, который вы хотите увидеть с помощью новой строки. –

ответ

1

Ваша программа бесконечно зацикливается в первом цикле.

Когда я = 0 этот цикл никогда не заканчивается:

for(j=2;(i*j)<n;j++) 
1

Ваш printf вызов может быть буферизации, который означает, что он не может на самом деле быть распечатаны до тех пор, пока буфер не заполнится или новая строка встречается.

Попробуйте добавить новую строку в конец строки или вместо этого назовите fprintf(stderr, ...) (что не буферизуется).

+1

Или 'fflush (stdout);' –

Смежные вопросы