我做了代碼的挑戰,我發現了一些奇怪的東西,我的代碼怎麼回事,所以我用C++Javascript與C++,相同的代碼,不同的結果,爲什麼?
function sumPrimes (num)
{
var sum=0;
for(var i=2; i<num; i++)
{
if(primeNumber(i)===true)
sum+=i;
}
return sum;
}
function primeNumber (i)
{
if(i==2 || i==3 || i==5 || i==7)
return true;
if(i%2!=0 && i%3!=0 && i%5!=0 && i%7!=0)
return true;
}
sumPrimes(977);
這給我造成的107812跑,但是當我做相同的C++
#include <iostream>
using namespace std;
bool primeNumber(int);
int sumPrimes(int);
int main()
{
int n;
cout << "n: ";
cin >> n;
cout << "Sum : " << sumPrimes(n) << endl;
system("PAUSE>=0");
}
int sumPrimes(int n)
{
int sum = 0;
for (int i = 2; i < n; i++)
{
if (primeNumber(i) == true)
sum += i;
}
return sum;
}
bool primeNumber(int i)
{
if (i == 2 || i == 3 || i == 5 || i == 7)
return true;
if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0)
return true;
}
結果是108583.
任何人能解釋這是怎麼回事?
什麼時候'primeNumber'返回false?也許是一個提示。 – erip
但是你意識到,你使用的主要測試聲明許多數字不是首要的,第一個是121? – Ctx
未定義執行達到非void函數末尾而未顯式返回值的C++行爲。 –