我正在研究一個相對簡單的問題,它基於將某個特定值下的所有素數加在一起。我寫了一個應該完成這個任務的程序。我正在使用長型變量。當我進入更高的數字(〜200/300k)時,我用來跟蹤總和的變量變爲負數,儘管沒有負值被添加到它(基於我的知識和我已經完成的一些測試) 。數據類型是否存在某些問題或者我缺少某些內容。C++中的大數問題
我的代碼是下面(在C++)[向量基本上是萬一人動態數組想知道]:
bool checkPrime(int number, vector<long> & primes, int numberOfPrimes) {
for (int i=0; i<numberOfPrimes-1; i++) {
if(number%primes[i]==0) return false;
}
return true;
}
long solveProblem10(int maxNumber) {
long sumOfPrimes=0;
vector<long> primes;
primes.resize(1);
int numberOfPrimes=0;
for (int i=2; i<maxNumber; i++) {
if(checkPrime(i, primes, numberOfPrimes)) {
sumOfPrimes=sumOfPrimes+i;
primes[numberOfPrimes]=long(i);
numberOfPrimes++;
primes.resize(numberOfPrimes+1);
}
}
return sumOfPrimes;
}
整數溢出。它總是整數溢出。 :) – Mysticial