大数的阶乘
发布时间:2020-12-14 02:54:17 所属栏目:大数据 来源:网络整理
导读:#include"stdio.h"#define N 10000int a[N]={0};int b[N]={0};int fac(int,int,int );int main(){int i;int temp,temp1;int n,m;a[0]=1;printf("please input a number:n");scanf("%d",n);m=2;temp1=1;fac(n,m,temp1);for(i=N;a[i]==0;i--)temp=i;for(i=tem
#include"stdio.h" #define N 10000 int a[N]={0}; int b[N]={0}; int fac(int,int,int ); int main() { int i; int temp,temp1; int n,m; a[0]=1; printf("please input a number:n"); scanf("%d",&n); m=2; temp1=1; fac(n,m,temp1); for(i=N;a[i]==0;i--) temp=i; for(i=temp-1;i>=0;i--) printf("%d",a[i]); return 0; } int fac(int n,int m,int temp2) { int i,j,k,temp,temp1,flag; for(i=temp2+10;a[i]==0;i--) temp=i; for(i=0;i<temp || flag==1;i++) { flag=0; temp1=a[i]*m; if((b[i]+temp1%10)>9) { b[i+1]=b[i+1]+(b[i]+temp1%10)/10; } a[i]=(b[i]+temp1%10)%10; if(temp1>9) //对进位数组进行分析 { for(j=i;temp1>0;j++) { temp1=temp1/10; b[j+1]=b[j+1]+temp1%10; } for(k=i+1;k<=j+1;k++) //对进位的进位进行处理 { b[k+1]=b[k+1]+b[k]/10; b[k]=b[k]%10; } } for(j=2*temp2;b[j]==0;j--); //判断进位数组剩下的进位数是否为零 if(j>i) { flag=1; } } temp2=i; for(i=0;i<=j;i++) b[i]=0; if(m<n) return fac(n,++m,temp2); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |