C ++程序查找素数和时序本身

时间:2013-05-08 16:57:32

标签: c++

我正在尝试编写一个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;
    }
}

2 个答案:

答案 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永远不会增加。