۰۵-خرداد-۱۳۸۶, ۰۱:۵۳:۲۳
۰۵-خرداد-۱۳۸۶, ۱۷:۵۶:۵۴
دوست من سلام
من نمیدونم راه حل پیشنهادی چی بوده ! یکی از راه حل ها اینه که شما ضرب اعداد بزرگ رو از طریق تقسیم به آرایه انجام بدین ! یعنی مثلا دو عدد 12 رقمی به چهار خونه سه تایی در دو آرایه تبدیل بشن . بعد هر قسمت 3 رقمی با سرعت در هم ضرب بشه و بعد جواب کلی تصحیح بشه !
من نمیدونم راه حل پیشنهادی چی بوده ! یکی از راه حل ها اینه که شما ضرب اعداد بزرگ رو از طریق تقسیم به آرایه انجام بدین ! یعنی مثلا دو عدد 12 رقمی به چهار خونه سه تایی در دو آرایه تبدیل بشن . بعد هر قسمت 3 رقمی با سرعت در هم ضرب بشه و بعد جواب کلی تصحیح بشه !
۰۶-خرداد-۱۳۸۶, ۰۰:۲۱:۴۱
سلام
مرسی از جوابتون. الان من برنامه ای نوشتم که فاکتوریل اعداد بزرگ را هم حساب میکنه. من فقط از نوع دابل متغیر رو گرفتم. جوابو درست می ده ولی 10 رقم از اعشار پایانی شو نمی نویسه.
مرسی از جوابتون. الان من برنامه ای نوشتم که فاکتوریل اعداد بزرگ را هم حساب میکنه. من فقط از نوع دابل متغیر رو گرفتم. جوابو درست می ده ولی 10 رقم از اعشار پایانی شو نمی نویسه.
۰۶-خرداد-۱۳۸۶, ۱۲:۵۵:۰۲
لطف کنید برنامه رو اینجا بزارین من ببینم چطور نوشتین تا بتونم بهتر راهنماییتون بکنم !
۰۶-خرداد-۱۳۸۶, ۲۲:۵۱:۲۰
۰۷-خرداد-۱۳۸۶, ۱۳:۱۳:۲۷
سلام
برنامه شما رو دیدم . این روش محاسبه برای اعداد خیلی بزرگ دقیق نیست . ببینید شما متغیر رو از نوع double گرفتید و در واقع یک عدد floating point ( اعشاری ) دارید که یک عدد 64 بیتی هست ( این بزرگترین نوع متغیر در زبان هست ) و فقط دقت اون 16 رقم اعشار عددی هست پس شما ماکزیمم میتونی به 16 رقم اعشار عدد اصلی دست پیدا کنی و نه بیشتر !
اگر میخوای هر 16 رقم رو ببینی باید سیستم نمایش اعداد رو به fixed point تغییر بدی . فقط کافیه که خط زیر رو اول برنامه ات قرار بدی که اعشارها رو ببینی :
اگر دقت بکنید میتونید ببینید که بعد از 16 رقم بقیه ارقام صفر خواهند بود و این نشون میده که بقیه ارقام اعشار صفر در نظر گرفته میشن و به همین دلیل جواب دقیقی نخواهیم داشت .
برنامه شما رو دیدم . این روش محاسبه برای اعداد خیلی بزرگ دقیق نیست . ببینید شما متغیر رو از نوع double گرفتید و در واقع یک عدد floating point ( اعشاری ) دارید که یک عدد 64 بیتی هست ( این بزرگترین نوع متغیر در زبان هست ) و فقط دقت اون 16 رقم اعشار عددی هست پس شما ماکزیمم میتونی به 16 رقم اعشار عدد اصلی دست پیدا کنی و نه بیشتر !
اگر میخوای هر 16 رقم رو ببینی باید سیستم نمایش اعداد رو به fixed point تغییر بدی . فقط کافیه که خط زیر رو اول برنامه ات قرار بدی که اعشارها رو ببینی :
کد:
cout.setf (ios_base::fixed , ios_base::floatfield);
اگر دقت بکنید میتونید ببینید که بعد از 16 رقم بقیه ارقام صفر خواهند بود و این نشون میده که بقیه ارقام اعشار صفر در نظر گرفته میشن و به همین دلیل جواب دقیقی نخواهیم داشت .
۲۸-شهریور-۱۳۸۸, ۲۳:۱۶:۰۴
سلام
من برای اینکه اثبات کنم برنامه ی اکسل همچنان بی نظیر و پر قدرت ترینه، چند ساعت وقت گذاشتم و با استفاده از ویژوال بیسیک در اکسل2007، برنامه ای نوشتم که بتونه فاکتوریل اعداد بزرگ رو محاسبه کنه.
این برنامه تنها یک محدودیت داره: فقط می تونه فاکتوریل اعدادی رو محاسبه کنه که تعداد رقم های جواب نهایی فاکتوریل آن عدد، کوچک تر از شانزده هزار باشه(16000). یعنی اگر جواب نهایی فاکتوریل، یه عدد شانزده هزار رقمی باشه(یا کمتر)، می تونه اون فاکتوریل رو محاسبه کنه.
فکر کنم همین قدرش هم برای سوت کشیدن مخ کافی باشه! اما تو فکرم که برنامه رو ارتقا بدم تا جواب های یک ملیون رقمی رو هم پیدا کنه.
یک نکته ی دیگه هم اینکه اگر عدد بزرگ باشه، برای محاسبه ی جواب باید مدتی صبر کنید که بستگی به بزرگی عددتون داره؛ ولی مطمئن باشید که اکسل جواب رومحاسبه می کنه.
سعی می کنم یه کمی اصلاحات روش انجام بدم و بعد بگذارمش روی وبلاگم.
اگه زودتر خواستید اون رو، یه ایمیل بزنید تا بفرستم خدمتتون.
http://www.excelable.blogfa.com/
excelable@gmail.com
من برای اینکه اثبات کنم برنامه ی اکسل همچنان بی نظیر و پر قدرت ترینه، چند ساعت وقت گذاشتم و با استفاده از ویژوال بیسیک در اکسل2007، برنامه ای نوشتم که بتونه فاکتوریل اعداد بزرگ رو محاسبه کنه.
این برنامه تنها یک محدودیت داره: فقط می تونه فاکتوریل اعدادی رو محاسبه کنه که تعداد رقم های جواب نهایی فاکتوریل آن عدد، کوچک تر از شانزده هزار باشه(16000). یعنی اگر جواب نهایی فاکتوریل، یه عدد شانزده هزار رقمی باشه(یا کمتر)، می تونه اون فاکتوریل رو محاسبه کنه.
فکر کنم همین قدرش هم برای سوت کشیدن مخ کافی باشه! اما تو فکرم که برنامه رو ارتقا بدم تا جواب های یک ملیون رقمی رو هم پیدا کنه.
یک نکته ی دیگه هم اینکه اگر عدد بزرگ باشه، برای محاسبه ی جواب باید مدتی صبر کنید که بستگی به بزرگی عددتون داره؛ ولی مطمئن باشید که اکسل جواب رومحاسبه می کنه.
سعی می کنم یه کمی اصلاحات روش انجام بدم و بعد بگذارمش روی وبلاگم.
اگه زودتر خواستید اون رو، یه ایمیل بزنید تا بفرستم خدمتتون.
http://www.excelable.blogfa.com/
excelable@gmail.com