2012-01-16 5 views
2

Рассмотрим последовательность п положительных целых чисел, где п и п числа введенных на стандартный ввод, вычислить сумму тех чисел, которые являются простыми.Добавление простых чисел в последовательности в C++

Как это сделать? Я пробовал следующий код, но не смог:

#include <iostream> 
using namespace std; 
int main() 
{ 
    int n, i, j, numero = 0, primo = 0, soma = 0; 
    cout << "Digite um numero: "; 
    cin >> n; 
    for (i = 0; i < n; i++) 
    { 
     cin >> numero; 
     for (j = 1; j < n; j++) 
     cout << " numero " << numero << endl; 
     { 
      if (numero %j == 0) 
       primo ++; 
       cout << "primo" << primo << endl; 
     } 
     if (primo == 2) 
     { 
      soma = soma + numero; 
      cout << " numero " << numero << endl; 
      cout << "soma" << soma << endl; 
     } 
    } 
    cout << soma << endl; 
    return 0; 
} 
+3

Во-первых, вы должны определить, что «кузены» означают в вашем вопросе. Затем дайте пример ввода, который не работает, какой выход IS и какой выход ДОЛЖЕН БЫТЬ. –

+0

Пример: n = 7; numero = 7 3 2 4 6 11 13; return soma = 36, т. е. 7 + 3 + 2 + 11 + 13 = 36 –

+0

Итак, почему 4 и 6 исключены из суммы? Потому что они сложны? Я не могу сказать по вашему вопросу. –

ответ

5

Это очень неэффективный тест на первичность. Но вот проблема:

for (j = 1; j < n; j++) 
    cout << " numero " << numero << endl; 
    { 
     if (numero %j == 0) 
      primo ++; 
      cout << "primo" << primo << endl; 
    } 

Во-первых, cout потребности быть в фигурных скобках. В настоящее время цикл for только повторяет cout, а не блок.

for (j = 1; j < n; j++) 
    { 
     cout << " numero " << numero << endl; 
     if (numero % j == 0) 
      primo++; 
     cout << "primo" << primo << endl; 
    } 

Далее, факторы numero падения между 1 и numeroвключительно, не 1 и n эксклюзивной. Таким образом, условие выхода для цикла является неправильным. Оно должно быть:

for (j = 1; j <= numero; j++) 

И, вы должны установить количество факторов на ноль для каждого нового номера:

for (primo = 0, j = 1; j <= numero; j++) 

И теперь он работает: http://ideone.com/FL4Ms

+0

Большое спасибо. –

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