سلام
طریقه محاسبه فاکتوریل اعداد بزرگ مثلا 6 رقمی چطوریه؟
آیا راهی داره بدون فرمول n * n-1 * n-2 * ... * 2 * 1 فاکتوریل رو بدست آرود.
از چه ساختاری میشه اصتفاده کرد و الگوریتم کار چطوریه
ممنون
سلام
طریقه محاسبه فاکتوریل اعداد بزرگ مثلا 6 رقمی چطوریه؟
آیا راهی داره بدون فرمول n * n-1 * n-2 * ... * 2 * 1 فاکتوریل رو بدست آرود.
از چه ساختاری میشه اصتفاده کرد و الگوریتم کار چطوریه
ممنون
مشکل در ذخیره ی اعداد بزرگ و ضرب اونها است. اگر نتیجه ی ضرب اعداد را به صورت آرایه ذخیره کنید و در ضرب نیز کدی را بنویسید تا این اعداد را در هم ضرب کنید مشکلی نخواهد بود. یعنی از دستور * برای ضرب اعداد بزرگ استفاده نکنید.
فرض کنید نتیجه ی ضرب اعداد قبلی در آرایه ای ذخیره شده است، عدد بعدی را با ضرب دستی (کد خودتون) در این عدد ضرب کرده و در آرایه ذخیره می کنیم.
سلام
اگر شما از یک زبان برنامه نویسی کاملاً شی گرا با قابلیت بازتعریف اپراتورها استفاده کنید، کارتان ساده خواهد بود، کافی است یک ساختار یا کلاس جدید ایجاد کنید که بتواند اعداد بسیار بزرگ را به صورت آرایه byte یا آرایه int نگداری و ضرب کند.
بعد هم در یک حلقه ساده از ان استفاده کنید.
البته لازم به ذکر است که Microsoft .Net Framework 4 شامل همچین ساختار آماده ای به نام System.Numerics.BigInteger است که میتواند به صورت نامحدود (محدود به RAM آزاد) عددی را نگاه دارد و با چهار عملی اصلی و... پردازش کند.
نتیجتاً در زبان هایی مثل C#.Net و VB.Net و C++.Net و J#.Net و ... میتوان کدی مثل این نوشت که به سادگی بتواند فاکتوریل اعداد بسیار بزرگ را هم محاسبه کند:
خود من همین دستور را همین الآن و قبل از ارسال این پست و مطلب در سایت، به سادگی و با موفقیت برای محاسبه 500000 (پانصد هزار فاکتوریل!) فاکتوریل استفاده کردم، البته کمی طول کشید تا انجام دهد ولی بدون مشکل محاسبه کرد.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
محاسبات چند هزار فاکتوریل خیلی سریع تر انجام شد و اگر صبر کافی ندارید پیشنهاد میکنم اول با چند هزار فاکتوریل امتحان کنید.
حتی تا حد چند ده هزار هم در چند ثانیه انجام شد.
موفق باشید.
Last edited by _H2_; 16-08-2011 at 21:06. دليل: اضافه کردن کد VB برای تکمیل تر شدن مطلب
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)