对前N个素数求和
Summing the first N primes
我需要创建一个程序,以'N'作为输入,并显示前N个素数,最后求和…这是我的代码,但它不起作用。(它循环:"如果((num = = 2) | | (num = = 3))")
你能帮我吗?提前谢谢。
我不能使用函数和数组
代码:#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int n, num = 1, rest, cont = 0, sum = 0;
bool exit = false;
int e = 1;
cout<<"How many prime number do you want to show? ";
cin>>n;
while (cont <= n)
{
num++;
if ((num == 2) || (num == 3))
{
cout<<num<<endl;
sum += num;
cont++;
}
else if (num%2 == 0)
{
}
else
{
bool exit = false;
int div = 3;
while (!exit)
{
rest = num%div;
if (num == div)
{
exit = true;
cout<<num<<endl;
sum += num;
cont++;
}
if (rest == 0)
exit = true;
div++;
}
}
num++;
}
cout<<"Sum: "<<sum<<endl;
return 0;
}
首先,使用变量名resto
而不是rest
,这是您声明它(if (resto == 0)
)时使用的名称。
第二,增加两次num
:在循环的开始和结束。删除最后的num++
,它应该工作得更好。
第三,将cont
初始化为1而不是0,否则它将计算前N+1个素数的和,而不是计算前N个素数的和。
这是你的代码的固定版本:
#include <iostream>
using namespace std;
int main()
{
int n, num = 1, rest, cont = 1, sum = 0;
bool exit = false;
int e = 1;
cout<<"How many prime number do you want to show? ";
cin>>n;
while (cont <= n)
{
num++;
if ((num == 2) || (num == 3))
{
cout<<num<<endl;
sum += num;
cont++;
}
else if (num%2 == 0)
{
}
else
{
bool exit = false;
int div = 3;
while (!exit)
{
rest = num%div;
if (num == div)
{
exit = true;
cout<<num<<endl;
sum += num;
cont++;
}
if (rest == 0)
exit = true;
div++;
}
}
}
cout<<"Sum: "<<sum<<endl;
return 0;
}
相关文章:
- 如何使用循环对所有数字求和?
- 循环中的线程 Runnin 用于对 c++ 中的数字求和
- 如何对堆栈中的所有项目求和?Postfix计算器
- 对前向声明类型进行unique_ptr的解决方法
- C++ 如何从文本文件中扫描二维数组并对行求和?
- 对字符求和并减去以获取文件
- 如何对继承的文件使用前向声明
- 如何对多维 std::vector 的所有元素求和?
- 使用 C++17 或更高版本对向量中的元素对求和的最'functional'方法?
- 如何对 std::各种继承类的列表求和C++
- 使用特征类对向量中的某些数字求和
- 以C++递归方式对链表中的元素求和
- 使用 constexpr 构造函数对结构进行前向声明
- 循环依赖(类对类型定义,类型定义对类),前向声明给出不明确的调用
- 如何对 while 循环内的输出求和
- 从C++中的文本文件中读取后如何对值求和
- 仅对前一行输入使用cin.clear()或cin,ignore()
- 返回对前向声明类型(C++)的引用
- 你对前馈神经网络有什么建议?
- 对前N个素数求和