如何实现长整数的除法

ahuacxh 2001-05-07 09:48:00
我的长整数是用long型的数组存储的,每个数组元素存长整数的四位,有没有什么好的算法实现两个长整数相除
...全文
394 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈硕 2001-10-01
  • 打赏
  • 举报
回复
gz
ahuacxh 2001-05-21
  • 打赏
  • 举报
回复
SAsura:
收到了,谢谢
SAsura 2001-05-21
  • 打赏
  • 举报
回复
已经发了,收到了没有?
azzh 2001-05-21
  • 打赏
  • 举报
回复
SAsura(SAsura) 
能把你做的那个程序也发给我一份吗?谢谢!
dmlc@gliet.edu.cn
ahuacxh 2001-05-19
  • 打赏
  • 举报
回复
SAsura:
能把你做的那个类发给我吗?谢谢,一定给分。
ahua_cxh@163.net
SAsura 2001-05-19
  • 打赏
  • 举报
回复
我做过一个长整数运算的类,加、减、乘,移位一应具全就是没有除,这个类存储时使用的是二进制,显示时化为十进制。应该可以用你们说的硬件除法原理来做除法,不过我不知道这个算法是什么。
ahuacxh 2001-05-18
  • 打赏
  • 举报
回复
windboar:
我也在想如何模拟计算机硬件除法的原理来做,要把数转化为二进制可以考虑用位运算,但是还有许多具体的操作还没想好

starfish:
谢谢了,不过我还没学汇编,给我我也看不懂
wildboar 2001-05-18
  • 打赏
  • 举报
回复
ahuacxh(阿华):
好!!!
starfish 2001-05-17
  • 打赏
  • 举报
回复
如果用汇编来写会更简单,因为有很多80x86指令支持长整数运算(BCD码运算) 我学汇编的时候写过不少这类程序,你要的话,我找找看
wildboar 2001-05-17
  • 打赏
  • 举报
回复
可不可以用硬件的不恢复余数法!!!
不过前提是必须是二进制!!!!!
QQ:51739451
ahuacxh 2001-05-16
  • 打赏
  • 举报
回复
我自己写了一个程序,我的长整数是用long型的数组存储的,每个数组元素存长整数的四位
算法思想如下:(长整数的加、减、乘和比较大小已实现,下面写的/都为整除)主要难点是在试商上,例如:
a1, a2
_________________
67,8900)5234,5678,9034
就是要确定a1,a2的值,a1、a2为0~9999的数
下面是试商的过程,首先令a1=5234/67=78 ,(假设长整数的乘法已实现),
然后计算a1 * 67,8900 =5295,4200 因为大于5234,5678,再进一步试商,
计算5295,4200-5234,5678=60,8522 由于试的商太大了,所以a1要减小
a1=a1-(60/67+1) ,得到a1=77,再次计算a1 * 67,8900=5227,5300 ,
5234,5678-5227,5300 =7,0378 这个数小于除数,因些结束试商,a1=77,
然后就相当于要计算
77, a2
________________
67,8900)5234,5678,9034
5227,5300
----------
7,0378,9034
将7,0378,9034,作一些变化,使得它的占用的数组的个数和除数相同
即70378,9034 ,然后试商,a2=70378/67=1050 ,a2 * 67,8900=71284,5000
71284,5000-70378,9034=905,5966 a2=a2-(905/67+1)=1036
1036*67,8900=70334,0400 70378,9034-70334,0400=44,8634 因为44,8634小于
除数,结束试商,a2=1036

请大家分析一下这个算法有什么漏洞,我的程序有些结果正确,有些结果不正确。上面我的表述
可能有些不清楚,但我想通过这个实例大家能大概明白吧,简单说来就是先保证被除数和除数位
数相同(这里位数是指占用几个数组元素),然后用被除数最高位除以除数最高位来试商,如果试
的商大了,就减小一些(减小的方法如上实例分析的那样),如果试的商太小了,就加大一些,当
试的商乘以除数这个结果与被除数之差小于除数时结束试商,其实就是模拟手算。
seedundersnow 2001-05-15
  • 打赏
  • 举报
回复
好象没有效率特别高的算法,基本上都是移位相减的。
yuddian 2001-05-13
  • 打赏
  • 举报
回复
我也是正在写一个这样的程序,如果有什么好的算法,可以共享啊!!
runrun 2001-05-12
  • 打赏
  • 举报
回复

好好想想应该不难吧
windindance 2001-05-08
  • 打赏
  • 举报
回复
循环相减。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧