大整数除法算法
电脑的用途-鼠害
大整数除法运算,将试除法进行到底,速度绝对有保证
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
return m;
}
else if(l==0)
{
e[0]=1;
*p=1;
c[0]=0;
return 1;
}
else
{
for(i=0;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
for(j=0;j
n1=k;
}
if(CPublic::LarNumCompare(d,b,n1,n)<0)
{
for(j1=0;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
*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
for(j=0;j
n1=k;
}
if(CPublic::LarNumCompare(d,b,n1,n)<0)
{
for(j1=0;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;
}