#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’.