ورود

View Full Version : محاسبه ی فاکتوریل اعداد بزرگ



daneshjo IT
شنبه 13 مرداد 1386, 15:00 عصر
سلام.
من برنامه ای برای محاسبه ی فاکتوریل اعداد بزرگ نوشتم. با توجه به اینکه نمیتوانیم فاکتوریل هر عددی را با استفاده از نوع داده ای long محاسبه کنیم چون از عدد خاصی به بالا تعداد ارقام زیاد شده و در نوع داده ای long نمیتواند قرار بگیرد.
بر این اساس من برنامه ای نوشتم که فاکتوریل اعداد بزرگ را محاسبه کند.

اما میخواستم از دوستان متخصص نظر خواهی کنم که این کد از نظر بهینه بودن چه طور است؟ آیا میشه کد را بهینه تر هم کرد؟
ممنون




#include<iostream.h>
#include<conio.h>
intmain()
{
clrscr();
int a[1500];
int i,f,c=0;
longint n;
cout<<"enter the number"<<"\n";
cin>>n;
a[0]=0;
for (i = 2; i < 1500; i++)
a[i] = 0;
a[1] = 1;
for (f = 1; f <= n; f++)
{
for (i = 1; i <1500; i++)
a[i] = f * a[i];
for (i = 1; i <1500; i++)
{
if (a[i] > 9)
{
a[i + 1] = a[i + 1] + a[i] / 10;
a[i] = a[i] % 10;
}
}
}
for (i =1499 ; i >= 1; i--)
{
if(a[i]!=0)
{
c=i;
break;
}
}
cout<<"the fact of this number is:";
for(i=c;i>=1;i--)
cout<<a[i];
getch();
return 0;

}