PDA

View Full Version : سوال: تفاوت long long با long



naserbagheri
چهارشنبه 26 تیر 1392, 17:35 عصر
من امروز سوال 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++
حالا علت چیست؟
اگه کسی میدونه توضیح بده؟

UfnCod3r
چهارشنبه 26 تیر 1392, 17:58 عصر
long
32 بیت فضا می گیره . int32
از -2147483648 تا 2147483647
long long
64 بیت فضا می گیره . int64
از -9223372036854775808 تا 9223372036854775807
:گیج: