سلام،من دارم سعی میکنم که 2 بتوان 100 امین عدد اول رو پیدا کنم ؛اما نمیدونم چطوری میشه یه عدد خیلی بزرگ رو تو یه ارایه ذخیره کنم : :cry2:؛لطفا اگه کسی اطلاعاتی داره راهنماییم کنه :مرسی
اطلاعیه
Collapse
No announcement yet.
نحوه ی ذخیره یک عدد بسیار بزگ تو یه ارایه
Collapse
X
-
پاسخ : نحوه ی ذخیره یک عدد بسیار بزگ تو یه ارایه
با سلام
شما میآتوانی با یه ساده سازی خیلی برنامه رو ساده کنی، به این صورت که اولا چون فقط یه عدد قرار محاسبه شود، اندازه آرایه را ثابت در نظر بگرید. ثانیا برای سادهآتر شده محاسبات عدد را به شکل دهدهی در نظر بگیری و هر بایت از آرایه را معرف یک رقم. برای مثال شما هم فقط نیاز به ضرب وجود دارد که پیادهآسازی آن هم خیلی راحت است.
نمایش این عدد نیز به علت فرض ساده کننده ما خیلی ساده است و فقط چاپ مقادیر آرایه از انتها به ابتدا است.
من دوست دارم آزاد فکر کنم، نرمآافزارآ و سختآافزارهای آزاد را به کار ببرم و اگر توانستم نرمآافزار، سختآافزار و محتوای آزاد درست کنم!
-
پاسخ : نحوه ی ذخیره یک عدد بسیار بزگ تو یه ارایه
با سلام
احتمالا دیگه تکلیف برنامهآنویسی خودتون رو انجام دادهآاید!
این برنامهآای نمونه برای محاسبه یک ۲ به توان یک عدد بزرگآ است. از نظر کارایی خیلی بهینه نیست (حافظه مصرفی اصلا بهینه نیست) و همچنین اندازه آرایه را به صورت دینامیک مشخص نمیآکنه.
برای محاسبه عدد ۲ به توان x مقدار ثابت POWER2 را در برنامه مشخص کنید و سپس آن را کامپایل و اجرا کنید.
کد PHP:#include <stdio.h>
#define POWER2 541
#define SIZE (POWER2*301)/1000 + 1
int main() {
unsigned char bignum[SIZE]={0};
int i,j,carry;
bignum[0]=1;
for(j=0;j<POWER2;j++) {
carry=0;
for(i=0;i<SIZE;i++){
bignum[i]=bignum[i]*2+carry;
carry=0;
if (bignum[i]>=10){
carry=1;bignum[i]%=10;
}
}
}
for(i=SIZE-1;i>=0;i--)
printf("%d",bignum[i]);
putchar('\n');
return 0;
}
عدد ۲ به توان ۵۰۰۰ :
14124670321394260368352096670161473336688961751845 411168136880858571181698427075
12558089126316711526373356032084313660827642038380 699793383359711857266399234310
51777851865399011877999645131707069373498212631323 752553111215372844035950900535
95486073341845340557556673680156558740546469964049 905084969947235790090561757137
66182282164342131815209915566771264986517822041740 618309392391768613413832940182
40225838692725596147005144243281075275629495339093 813198966735633606329691023842
45412583588865687313398128724098000883807366822180 426443291089403078902021944057
81984882673397682388722799021574203072475705104238 458688725967358918058187277964
35753018518086641356012851302546726823009250218328 018251907340245449863183265637
98786219851104636298546194958728111913990722800438 594288095395881655456762529608
69168857748289344499413624165886753269403325611036 645569826222068344742198110818
72404929503481991376740379825998791411879802717583 885498575115299471743469241117
07023039810337861523279371029099265644484289551183 035573315202080415792009004181
19518804567055154683494461827317423276859892776076 207095258783187664883683489650
15474997864119765441433356928012344111765735336393 557879214937004347568208665958
71776405929359288751429284355704708916487648311661 569188620381299755569017189216
97337552244690324750787978309013215799401273372106 943772834399222802740607982347
86740434893458120198341101033812506720046609891160 700284002100980452964039788704
33530261933759786205219228037148113216414718651416 9090917191909376
من دوست دارم آزاد فکر کنم، نرمآافزارآ و سختآافزارهای آزاد را به کار ببرم و اگر توانستم نرمآافزار، سختآافزار و محتوای آزاد درست کنم!
دیدگاه
دیدگاه