2015-02-06 2 views
-1

Я только начал программировать. Я написал простую программу для проверки простых чисел, но не работает. Пожалуйста, помогите мне найти мою ошибку.Почему эта программа проверяет, что простые числа не работают?

#include<stdio.h> 
void main() 
{ 
    int n,i,c=0; 
    printf("enter any number: "); 
    scanf("%d", &n); 
    for(i=2;i<n;i++) 
    { 
    if(n%i==0) 
     c=c+1; 
    if(c>0){ 
     break; 
     printf("\n%d is not a prime number",n); 
    } 
    } 
    if(i==n) 
    printf("\n%d is a prime number",n); 
} 
+4

Ваш компилятор не выдал предупреждение для утверждения после 'break;'? –

+0

Не уверен, почему он не работает, но c здесь выглядит как бесполезная переменная. Почему бы просто не делать: if (n% i == 0) {материал здесь} –

ответ

1

Если поставить break после printf("\n%d is not a prime number",n); программа работает правильно. Когда C исполняет команду break, она немедленно выпрыгивает из ближайшего цикла, поэтому она не выполняет следующую строку в цикле, то есть не печатает, что это не простое число.

+0

... Но было бы лучше, если выходные строки закончились новыми символами, а 'c' действительно не нужны, и там больше использовать пробелы внутри строк кода и меньше случайного интервала в строках, используемых в выводе, а стандарт поддерживает 'int main()', а не 'void main()', и алгоритм не очень эффективен ... –

+0

@JonathanLeffler Действительно все верно, что вы написали! Он новичок, поэтому он узнает об этом. Я просто попытался решить, почему программа работает неправильно, и это был его вопрос. Другие вещи касаются стиля и эффективности программы. –

+0

Да, и это нормально (это нормально, чтобы ограничить сферу вашего ответа); поэтому я сделал комментарий, а не заставляю свою информацию отвечать. –

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