Как мне найти сумму целых чисел простого числа в C на основе неограниченного ввода?

#c #loops #numbers

#c #циклы #числа

Вопрос:

Это мой код суммы простого числа. Ввод неограничен, но должен заканчиваться 0. Например, входные данные 11, 4, 9, 17 должны выводить сумму простых чисел, которая в данном случае равна 28. Мой код печатает только 11. Цикл останавливается, как только он достигает любой производной от 2, и я не могу найти решение этой простой проблемы.

 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char*argv[]) {
  int n, i, flag;
  int sumOfPrimeNumbers;
    sumOfPrimeNumbers = 0;
    flag = 0;
    do {
        for(i=2;i < n;i  )
        {
          scanf("%d", amp;n);
          if(n%i==0) {
            flag=1;
          }
        }
        if(flag==0) {
          sumOfPrimeNumbers = sumOfPrimeNumbers   n;
          break;
        }
    } while (n != 0);
  printf("%dn", sumOfPrimeNumbers);
return 0;
}
  

Комментарии:

1. Вы нигде не читали ввод n перед циклом do-while?

2. Поместите flag=0; строку после do { , а также предыдущий комментатор прав, n не инициализируется, когда вы нажимаете на цикл for. Scanf должен быть после flag = 0; и перед циклом for.

3. Вы используете n до того, как оно примет допустимое значение.

4. Во-первых: знаете ли вы, почему ваша программа не работает так, как вы хотите?

5. Спасибо, довольно глупые ошибки! Удалось решить это.

Ответ №1:

Оба комментатора правы. Вы используете переменную ‘n’, прежде чем принимать значение от пользователя и сохранять его в переменной ‘n’.