大整数除法算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档