我試圖產生素數,我幾乎有它的工作,但由於某種原因,它表明,109是不是素數時,109是素數。爲什麼我的代碼說109不是素數?
所以,當我輸出我factorCount顯示「113 :: 29」時,113是第30屆首要因素,併爲它的107,而不是109
#include <iostream>
using namespace std;
void mark(bool arr[], int a, int n){
int i = 2;
int num = 0;
while((num = i*a) <= n){
arr[num-1] = 1;
i++;
}
}
void sieve(int n){
int primeCount = 0;
if(n >= 2){
bool arr[n];
for(int i=1; i<n; i++){
if(arr[i] == 0){
primeCount++;
cout << i+1 << " :: " << primeCount << endl;
mark(arr, i+1, n);
}
}
}
}
int main(){
int n = 120;
sieve(n);
return 0;
}
對於任何想知道的人,是的,109是素數。 – 2014-10-27 23:06:45
使用你的調試器! – 2014-10-27 23:07:32
我聞到未定義的行爲。 – 2014-10-27 23:07:52