大整数除法算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大整数除法运算,将试除法进行到底,速度绝对有保证
int CPublic::LarNumDivision(int a[],int b[],int c[],int e[],int m,int n,int *p) //a是被除数,b是除数,c余数,e商
{
//m是a的位数,n是b的位数,返回c的位数,*p记录e的位数int i,i1,j,j1,l,k,k1=0;
int n1;
int d[MAX]={0},f[MAX]={0};
l=CPublic::LarNumCompare(a,b,m,n);
if(l<0)
{
e[0]=0;
*p=1;
for(i=0;i c[i]=a[i]; return m; } else if(l==0) { e[0]=1; *p=1; c[0]=0; return 1; } else { for(i=0;i d[i]=a[i]; i--; i1=i; n1=n; l=CPublic::LarNumCompare(d,b,n1,n); if(l<0) { i++; if(i { d[i]=a[i]; n1=i+1; } while(i { while(CPublic::LarNumCompare(d,b,n1,n)>=0) { k=CPublic::LarNumMinus(d,b,c,n1,n); f[k1]++; for(j=0;j d[j]=0; for(j=0;j d[j]=c[j]; n1=k; } if(CPublic::LarNumCompare(d,b,n1,n)<0) { for(j1=0;j1 c[j1]=d[j1]; } if(d[0]==0) i1=n1-1; if(d[0]!=0) i1=n1; i++; if(i { d[i1]=a[i]; n1=i1+1; } k1++; } for(i=0;i e[i]=f[i]; *p=k1; return k; } if(l>=0) { while(i { while(CPublic::LarNumCompare(d,b,n1,n)>=0) { k=CPublic::LarNumMinus(d,b,c,n1,n); f[k1]++; for(j=0;j d[j]=0; for(j=0;j d[j]=c[j]; n1=k; } if(CPublic::LarNumCompare(d,b,n1,n)<0) { for(j1=0;j1 c[j1]=d[j1]; } if(d[0]==0) i1=n1-1; if(d[0]!=0) i1=n1; i++; if(i { d[i1]=a[i]; n1=i1+1; } k1++; } for(i=0;i e[i]=f[i]; *p=k1; return k; } } return 1; }