![](/img/trans.png)
[英]Finding Sum of Prime Numbers between interval (C++ program doesn't work for large numbers)
[英]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::
一起編譯,並在cout
和endl
之前添加,但是會導致未定義的行為。 嘗試:
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.