PDA

View Full Version : فاکتوریل اعداد بزرگتر از 50



zer0cool
یک شنبه 04 آذر 1386, 15:31 عصر
:متفکر:
من میخوام فاکتوریل اعداد بزرگتر از پنجاه رو بدست بیارم با توجه به بزرگ بودن عدد خروجی آیا باید اونو داخل آرایه قرار بدم اگر حدسم درسته چطور باید یک عدد بزرگ رو در یک آرایه قرار بدم. اگر کسی راهنمایی بکنه یا آدرس جایی رو برای مطالعه در اختیارم بذاره ممنون میشم.

emad_67
یک شنبه 04 آذر 1386, 16:16 عصر
تو همین بخش و بخش ساختمان داده ها یه جست وجویی بکن، یه چیزایی هست.
تو isp هم که کلا هر جایی که توش فاکتوریل بوده فیل *تر شده برای شما رو نمیدونم.

molla652003
یک شنبه 04 آذر 1386, 22:23 عصر
http://itmashhad.com/art-of-programming-vt1216-22.html#9940

enjmehrdad
سه شنبه 09 بهمن 1386, 17:42 عصر
برو تو وبلاگم بدون آرایه حساب میکنه : http://mehrdad.znuclub.com

Mr.Olympia
چهارشنبه 10 بهمن 1386, 06:27 صبح
سلام دوست عزیز راستش من نمیدونم چطوری شما با آرایه فاکتوریل اعداد رو حساب میکنید من خودم یه جور دیگه میرم و فقط با یک حلقه کار میکنه البته توی C++ برای اعداد بزرگ جواب نمیده چون محدوده متغیر int خیلی کمه البته توی پاسکال میتونم اینکارو بکنم که برای اعداد خیلی بزرگ هم جواب بده ولی تا حالا اینکارو نکردم چون توی پاسکال خیلی راحت میشه محدوده اعداد و نحوه نشون دادنشون رو تنظیم کرد ولی در کل اگر بخوای که فاکتوریل اعداد بزرگتر 50 رو بگیری میتونی از javascript استفاده کنی که متغیرهاش variant هستن و راحت میشه باهاش کار کرد و محدوده اش خیلی بزرگه کدش هم همین الان نوشتم اینجوری میشه (تا فاکتوریل 170 رو حساب میکنه)


<html>
<head>
<title>Factorial - Author : Mr.Olympia</title>
<script language="javascript" type="text/javascript">
function Start()
{
var number = prompt("Enter a number : ","");
var answer = 1;
for (var i=number;i>=1;i--)
{
answer = answer * i;
}
alert("Factorial Of "+number+" Is "+answer);
}
</script>
</head>
<body onload="Start()">
</body>
</html>

موفق باشی

Mr.Olympia
چهارشنبه 10 بهمن 1386, 06:58 صبح
سلام من همین الان با C++ یک برنامه نوشتم که فاکتوریل اعداد رو تا عدد 1754 میتونه حساب کنه با استفاده از همون الگوریتم قبلی فقط از یه نوع متغیر با محدوده خیلی بزرگ long double استفاده کردم اینم از کدش :


// Author : Morteza Sherafati (Xerxes)
#include <iostream.h>
#include <conio.h>

void main ()
{
clrscr();
long int number;
long double answer = 1;
cout<<"Enter a number : ";
cin>>number;
for (int i=number;i>=1;i--)
{
answer *= i;
}
cout<<"\nFactorial Of "<<number<<" Is "<<answer;
getch();
}


حالی به حولی

ICEMAN
پنج شنبه 11 بهمن 1386, 10:21 صبح
برای جمع و ضرب و تفریق و تقسیم من یه سری کد گذاشتم میتونی با ضربش راحت روی فاکتوریل کار کنی
http://barnamenevis.org/forum/showthread.php?t=90328

kasra515
یک شنبه 14 بهمن 1386, 18:09 عصر
سلام
من این کد رو مقداری کوتاهتر نوشتم:


long double fact(int n)
{
int i;
long double f;
i=1;
f=1;
while (i<=n) {
f = f*i ;
i = i+1;
}
return f ;
}


long double تا 170 رو جا می گیره:چشمک:

Master.
سه شنبه 16 بهمن 1386, 05:39 صبح
// Factorial Calculator By Mehrdad Jamali 86442125.
// http://mehrdad.znuclub.com
// jamali.mehrdad@gmail.com
# include <stdio.h>
# include <conio.h>
# include <math.h>
float getex(double);
main()
{
int i,n;
double s=0.0,a,b;
clrscr();
printf("*** Factorial Calculator *** \n.:: Mehrdad Jamali ::. Stu#:86442125 \n--------------------------------\n");
printf("Please enter N to Calculate N! :");
scanf("%d",&n);
if (n>=0)
{
printf("\nPlease wait , calculating ...\n");
// calculating s = Siq (i=1 to n) [ Log i ]
for (i=1;i<=n;i++)
s+=log10(i);
b = floor(s);
// End of Calculating S
a = getex(s-b);
printf("\n\n\n Result: %d! ~= %5.4f e+%d\n\n-----------\n",n,a,(int)(b));
printf("[[[ Please enter any key to exit ... ]]]");
}

else
{
clrscr();
printf("Invalid arrgument found ,\n [[[ please enter any key to exit ... ]]]");
}
getch();

}
float getex(double p)
{
float r;
r = pow(10,p);
return r;
}

Master.
سه شنبه 16 بهمن 1386, 05:41 صبح
با استفاده از الگوریتم فوق میتونید خیلی راحت فاکتوریل اعدا بزرگ رو براحتی محاسبه کنید ...

Mr.Olympia
سه شنبه 16 بهمن 1386, 06:59 صبح
با استفاده از الگوریتم فوق میتونید خیلی راحت فاکتوریل اعدا بزرگ رو براحتی محاسبه کنید ...

ببخشید میشه بگید تا چقدر رو میتونه فاکتوریل بگیره ؟؟

enjmehrdad
پنج شنبه 02 خرداد 1387, 15:33 عصر
ببخشید میشه بگید تا چقدر رو میتونه فاکتوریل بگیره ؟؟

سلام من مهرداد جمالی هستم ، در این مورد حتی خودم هم نمیتونم نظر بدم چون کار شبیه سازی ریاضی هست (استفاده از سری ها برای به نتیجه رسیدن) .

برای مثال فاکتوریل عدد 56786 رو گرفتم تا با قدرت این الگوریتم آشنا بشید:

*** Factorial Calculator ***
.:: Mehrdad Jamali ::. Stu#:86442125
--------------------------------
Please enter N to Calculate N! :56786
Please wait , calculating ...

Result: 56786! ~= 1.8836 e+245315
-----------
[[[ Please enter any key to exit ... ]]]

mahmood3d
جمعه 03 خرداد 1387, 21:03 عصر
سلام من همین الان با C++ یک برنامه نوشتم که فاکتوریل اعداد رو تا عدد 1754 میتونه حساب کنه با استفاده از همون الگوریتم قبلی فقط از یه نوع متغیر با محدوده خیلی بزرگ long double استفاده کردم اینم از کدش :


// Author : Morteza Sherafati (Xerxes)
#include <iostream.h>
#include <conio.h>

void main ()
{
clrscr();
long int number;
long double answer = 1;
cout<<"Enter a number : ";
cin>>number;
for (int i=number;i>=1;i--)
{
answer *= i;
}
cout<<"\nFactorial Of "<<number<<" Is "<<answer;
getch();
}
حالی به حولی

برنامه رو نوشتم و خواستم براي شما تو انجمن قرار بدم كه نوشته Mr.Olympia رو ديدم و ديگه دوباره ننوشتم .
همانطور كه اشاره شد متغيرتون رو از نوع long double بگيريد تا بتونيد تا فاكتوريل عدد 1754 رو محاسبه كنيد .

mahmood3d
جمعه 03 خرداد 1387, 21:06 عصر
سلام من مهرداد جمالی هستم ، در این مورد حتی خودم هم نمیتونم نظر بدم چون کار شبیه سازی ریاضی هست (استفاده از سری ها برای به نتیجه رسیدن) .

برای مثال فاکتوریل عدد 56786 رو گرفتم تا با قدرت این الگوریتم آشنا بشید:

*** Factorial Calculator ***
.:: Mehrdad Jamali ::. Stu#:86442125
--------------------------------
Please enter N to Calculate N! :56786
Please wait , calculating ...

Result: 56786! ~= 1.8836 e+245315
-----------
[[[ Please enter any key to exit ... ]]]

دوست عزيز مقدار 1.8836 e+245315 بايد توي يك متغير قرار بگيرد و توي cpp نوع متغيري نداريم كه اين عدد رو ساپورت كنه .:متفکر: