naserbaghei
17th July 2013, 06:57 PM
من امروز سوال projecteuler #10 (http://projecteuler.net/problem=10)رو حل میکردم
برای برنامه اولم نوع متغیر رو long گرفتم
//************************
// Bagheri. Naser
//ProjectEuler Problem #10
//************************
#include <iostream>
#include <cmath>
using namespace std;
bool check(long n)
{
if(n == 2)
return true;
else if(n == 1)
return false;
if(n % 2 == 0)
return false;
for(int i = 3; i <=sqrt(n); i += 2)
{
if(n % i == 0)
return false;
}
return true;
}
int main()
{
long sum =0;
for(long i = 2; i<2000000; i++)
{
if(check(i)==true)
{sum += i;}
}
cout<<sum;
return 0;}
جواب میشه :1179908154 که submit نمیشه؟
اما برنامه دوم که از نوع متغیر long long استفاده کردم
//************************
// Bagheri. Naser
//ProjectEuler Problem #10
//************************
#include <iostream>
#include <cmath>
using namespace std;
bool check(long long n)
{
if(n == 2)
return true;
else if(n == 1)
return false;
if(n % 2 == 0)
return false;
for(int i = 3; i <=sqrt(n); i += 2)
{
if(n % i == 0)
return false;
}
return true;
}
int main()
{
long long sum =0;
for(long long i = 2; i<2000000; i++)
{
if(check(i)==true)
{sum += i;}
}
cout<<sum;
return 0;}
که جواب میشه 142913828922 که submit میشه!
کد ها شبیه هم هستند اما فقط یه long فرق داره
کامپایلر g++
حالا علت چیست؟
اگه کسی میدونه توضیح بده؟
برای برنامه اولم نوع متغیر رو long گرفتم
//************************
// Bagheri. Naser
//ProjectEuler Problem #10
//************************
#include <iostream>
#include <cmath>
using namespace std;
bool check(long n)
{
if(n == 2)
return true;
else if(n == 1)
return false;
if(n % 2 == 0)
return false;
for(int i = 3; i <=sqrt(n); i += 2)
{
if(n % i == 0)
return false;
}
return true;
}
int main()
{
long sum =0;
for(long i = 2; i<2000000; i++)
{
if(check(i)==true)
{sum += i;}
}
cout<<sum;
return 0;}
جواب میشه :1179908154 که submit نمیشه؟
اما برنامه دوم که از نوع متغیر long long استفاده کردم
//************************
// Bagheri. Naser
//ProjectEuler Problem #10
//************************
#include <iostream>
#include <cmath>
using namespace std;
bool check(long long n)
{
if(n == 2)
return true;
else if(n == 1)
return false;
if(n % 2 == 0)
return false;
for(int i = 3; i <=sqrt(n); i += 2)
{
if(n % i == 0)
return false;
}
return true;
}
int main()
{
long long sum =0;
for(long long i = 2; i<2000000; i++)
{
if(check(i)==true)
{sum += i;}
}
cout<<sum;
return 0;}
که جواب میشه 142913828922 که submit میشه!
کد ها شبیه هم هستند اما فقط یه long فرق داره
کامپایلر g++
حالا علت چیست؟
اگه کسی میدونه توضیح بده؟