PDA

View Full Version : محاسبه روی اعدادی به طول 3000 و بیشتر



nasr
سه شنبه 28 مهر 1383, 10:59 صبح
سلام
چگونه باید برنامه ای نوشت که اعدادی تا 3000 عدد را گرفته و مثلا ضرب و تقسیم و ... روی آن انجام دهد
(البته اون کسی که این را می خواد گفته که اعدادی به طول 3 میلیارد ولی من کمش کردم :) )

ممنون

Sepidar
سه شنبه 28 مهر 1383, 12:57 عصر
اعدادی تا 3000 عدد را گرفته
احتمالا منظورتون تا 3000 رقمه

بگذارید یک مثال ساده در مورد اعداد 2 بایتی بزنیم: برای اینکه 2 عدد 2 بایتی را به شکل دستی با هم جمع کنیم، ابتدا 2 بایت با ارزش مکانی کمتر را با یکدیگر جمع میکنیم. آنگاه بررسی میکنیم که حاصل جمع ما رقم انتقالی دارد یا نه؟ (مثل 1+1=01) برای این بررسی چند راه حل وجود دارد. اما اگر درست یادم باشه، فلگی وجود داشت که مشخص میکرد در محاسبات انجام شده رقم انتقالی وجود دارد یا نه؟ (Carry Flag) سپس 2 بایت با ارزش مکانی بالاتر را با هم جمع میکنیم و اگر رقم انتقالی وجود داشت، حاصل را باضافه یک میکنیم.

البته چند مساله دیگر را نیز بایدلحاظ کرد:
1- در مسایل عملی وقتی عددی 3000 رقم دارد عملا ارقام کمی از آن دارای ارزش می باشند و لذا نیاز به نگهداری هر 3000 رقم نمی باشد.
2- برای نگهداری اعداد با طول زیاد بهتر است یک کلاس تعریف شود تا عملیات مربوط به اعداد (محاسبات، نمایش و ...) راحتتر انجام شود.
3- 10^2=1024 یا تقریبا 1000. یعنی با 10 بیت میتوان 3 رقم (دهدهی) را نگهداری کرد. پس برای 3000 رقم (دهدهی) 1000*10=10000 بیت یا 10 کیلو بایت لازم است. در این حالت عملا سرعت محاسبات به شدت افت میکند. اگر مساله تان کاربردی است (و پروژه دانشجویی نیست) بگویید تا یک سری راه کار عملی نشان دهم.

nasr
جمعه 01 آبان 1383, 14:29 عصر
با سلام

ممنون میشم اگه کامل برام توضیح بدید این یه پروژه است ولی نه دانشجویی برای یه کارایی در حد نجوم و ستاره شناسی
این عدد هم تعداد ستارگان آسمون است
که باید همینطور محاسبه بشه که مثلا توی این ماه چند تا ستاره از این نقطه رد شده و از اینطور چیزها
لطفا اگه میشه یه چند تا مثال عملی هم بزنید
باتشکر
:flower:

MiRHaDi
شنبه 02 آبان 1383, 18:14 عصر
سلام
اگه برای 3000 تا بخوای از آرایه هم میشه استفاده کرد سرعتشم بد نیست
اگه برای 3000000 بخوای خوب وضعیت فرق میکنه ! باید Bitwise کار کنی که به 1245724 بایت برای هر عدد نیاز داری ! یعنی 1 مگ .
اگه خواستی میتونم تو پروژه باهات شریک شم
قربان یو
بای