我正在尝试编写一个c ++程序,它可以找到n个素数和时间本身。我已经使用这种逻辑用其他5种语言完成了这个。出于某种原因,此代码不执行任何操作。我正在使用Code Blocks编译器。是什么导致此代码无法工作,我该如何解决?我对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;
}
}
答案 0 :(得分:1)
几个问题:
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
循环中,您需要在c
之后增加b[c] = d
,否则,它会一次又一次地将元素转换为相同的索引。
答案 1 :(得分:0)
int b
应声明为int *b
如果要使用using namespace std
等,而不使用名称空间前缀,则需要添加cout
。
使用前缀,您可以执行std :: cout。
你也有一个无限循环,因为c永远不会增加。