繁体   English   中英

C ++程序查找素数并自行计时

[英]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::一起编译,并在coutendl之前添加,但是会导致未定义的行为。 尝试:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM