PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال تفاوت long long با long



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++
حالا علت چیست؟
اگه کسی میدونه توضیح بده؟

storm_saeed
5th September 2013, 12:49 PM
چون long اندازه اش 32 بیتی هست ولی lاون یکی 64 بعضی از داده ها به خاطر فضا زیادی که اشغال میکنن نمیشه تو long ذخیره کرد(i

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد