考虑一系列n个正整数,其中n和n个数字在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)
这是一个非常低效的素性测试.但问题出在这里:
Run Code Online (Sandbox Code Playgroud)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;
}
Run Code Online (Sandbox Code Playgroud)
接下来,要素numero之间的秋季1和numero 包容性的,而不是1和n排他性.所以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