簡體   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