您的位置:首页 > 其它

高精度除法

2016-02-01 20:40 309 查看
做除法时,每一次上商的值都在0~9,每次求得的余数连接以后的若干位得到新的被除数,继续做除法。因此,在做高精度除法时,要涉及到乘法运算和减法运算,还有移位处理。当然,为了程序简洁,可以避免高精度乘法,用0~9 次循环减法取代得到商的值。显然高精度除法相对是比较麻烦的,由于竞赛中很少涉及高精度数除以高精度数,所以,我们在这里只讨论一下高精度数除以普通整数的算法,采取的方法是按位相除法。

program exam4;
const max=200;
var a,c:array[1..max] of 0..9;
x,b:longint;
n1:string;
lena,i,j:integer;
begin
readln(n1);
lena:=length(n1);
for i:=1 to lena do a[i] := ord(n1[i]) - ord(’0’);
readln(b);
x:=0; {按位相除}
for i:=1 to lena do
begin                 //按位相除
c[i]:=(x*10+a[i]) div b;
x:=(x*10+a[i]) mod b;
end;
j:=1;
while (c[j]=0) and (j<lena) do inc(j); {去除高位的0}
for i:=j to lena do write(c[i]) ;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: