在C++中添加序列中的素数

Reg*_*lva 2 c++

考虑一系列n个正整数,其中nn个数字在stdin上输入,计算素数的总和.

我怎么做?我尝试了以下代码但失败了:

#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;
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*igt 5

这是一个非常低效的素性测试.但问题出在这里:

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

首先,cout需要在大括号之间.目前for循环只重复cout,而不是块.

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

接下来,要素numero之间的秋季1numero 包容性的,而不是1n排他性.所以for循环退出条件是错误的.它应该是:

    for (j = 1; j <= numero; j++)
Run Code Online (Sandbox Code Playgroud)

并且,您必须为每个新数字设置因子数量为零:

    for (primo = 0, j = 1; j <= numero; j++)
Run Code Online (Sandbox Code Playgroud)

现在它可以工作:http://ideone.com/FL4Ms