大数除法运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#define M 1000005
char s1[M],s2[M];
int a[M];
void ss(int m)//减运算
{
int i=0,j;
while(1)
{
if(s1[i]=='0') i++;
else
{
j=i;
break;
}
}
for(; i
for(i=m-1; i>j; i--)
if(s1[i]<'0')
{
s1[i]+=10;;
s1[i-1]--;
}
}
int main()
{
int i,j,k,n,m;
while(~scanf("%s%s",s1,s2))
{
n=strlen(s1);
m=strlen(s2);
if(n
printf("0 余数=");//求余数
for(i=0; i
printf("\n");
continue;
}
k=0;
while(1)
{
a[k]=0;
while(strcmp(s1,s2)>=0)//一直进行减法,直到不能减为止
{
ss(m);
a[k]++;
}
k++;
if(n==m) break;
for(i=m-1; i>=0; i--) //在s2前面补0,以便进行减法运算
s2[i+1]=s2[i];
s2[0]='0';
m++;
s2[m]='\0';//strcmp()函数遇到字符'\0'结束
}
i=0;
while(a[i]==0) i++;//去除前导0
for(; i
printf(" 余数=");
j=0;//求余数
while(s1[j]=='0') j++;
if(j==n)
{
printf("0\n");
continue;
}
for(; j
printf("\n");
}
return 0;
}