计算大数n!

来源:互联网 发布:汽配数据服务商 编辑:程序博客网 时间:2024/06/05 19:33

当要计算n!时,n不能太大,不然计算机存储不了,一般double为64位,用其存储十进制整数时,其能表示的只能是20位长度,现在要计算一个n!,使得s在50位之内都能够计算出来。

#include<iostream.h>#define  MAX 50int a[MAX];void main(){int n;cout<<"-1 is end"<<endl;cout<<"cin>>n:  ";cin>>n;while(n!=-1){int len=1;a[0]=1;bool flag=0;for(int i=1;i<=n;i++){int add=0;for(int j=0;j<len;j++){a[j]*=i;a[j]+=add;if(a[j]>=10){add=a[j]/10;a[j]=a[j]%10;}elseadd=0;}while(add>0){a[len]=add%10;add/=10;len++;if(len>=MAX){cout<<"error"<<endl;flag=1;break;}}if(flag==1)break;}if(flag==0){for(i=len-1;i>=0;i--)cout<<a[i];cout<<endl;}cout<<"cin>>n:  ";cin>>n;}}