0

我正在尝试编写一个 C++ 程序来查找 n 个素数和时间本身。我已经使用这种逻辑在其他 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;
    }
}
4

2 回答 2

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,这将在andstd::之前添加,但会导致未定义的行为。尝试:coutendl

cout << b[i] << endl;

如果你只想打印b[i]s 。

此外,在您的while循环中,您需要在cafter递增b[c] = d,否则,它会一次又一次地将元素放入同一索引中。

于 2013-05-08T17:00:52.013 回答
0

int b应声明为int *b

using namespace std如果你想使用coutetc. 没有命名空间前缀,你需要添加。使用前缀,您可以执行 std::cout。

此外,您还有一个无限循环,因为 c 永远不会递增。

于 2013-05-08T17:02:43.747 回答