Я делаю код вызов, и я нашел некоторые странные вещи происходят с моим кодом, так что я побежал с C++Javascript vs 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
Поведение C++, когда выполнение достигает конца не-void-функции без явного возврата значения, не определено. –