[英]Finding Sum of Prime Numbers between interval (C++ program doesn't work for large numbers)
[英]C++ Program Finding Prime Numbers and Timing itself
我正在尝试编写一个查找n个质数和其自身时间的c ++程序。 我已经使用此逻辑以其他5种语言完成了此操作。 由于某种原因,此代码不执行任何操作。 我正在使用代码块编译器。 是什么导致该代码无法正常工作,我该如何解决? 我对c ++不太熟悉,因此可能很简单。
#include <iostream>
#include <math.h>
int main(){
int n=10;
int b=new int[n];
int c=0;
int d=2;
while(c<n){
bool e=true;
for(int i=0;i<c;i++){
if(d<sqrt(b[i])){
break;
}
if(d%b[i]==0){
e=false;
break;
}
}
if(e){
b[c]=d;
c++;
}
d++;
}
for(int i=0;i<c;i++){
cout << b[i]+"\n" << endl;
}
}
几个问题:
int b=new int[n];
//^^compile error
应该
int* b=new int[n]; //also need initialize array b
与此同时:
if (d<sqrt(b[i]))
在尝试访问b
之前,应先对其进行初始化。
除了:
cout << b[i]+"\n" << endl;
编辑: @Daniel Fischer,这将与std::
一起编译,并在cout
和endl
之前添加,但是会导致未定义的行为。 尝试:
cout << b[i] << endl;
如果只想打印b[i]
。
另外,在while
循环内,您需要在b[c] = d
之后递增c
,否则,它将一次又一次地将元素移到相同的索引中。
int b
应该声明为int *b
如果要使用不带名称空间前缀的cout
等,则需要using namespace std
添加。 使用前缀,您可以执行std :: cout。
另外,由于c永远不会递增,因此您会遇到无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.