大数除以大数

本文探讨了一种高效的除法算法,对比简单的减法除法器,该算法通过从高位向低位逐步减除的方式提高计算效率,尤其适用于大数运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说一下我们所要的结果,当除数除不开被子除数时,不用除到小数,当除数小于被除数时,除数作为余数既可,不用再向下除了。
    除法算法是最容易想到的啦!我们学数字电路,或模拟电路时里面有用门实现的除法器,做法是用除数减被除数,再用一个加法器去计算存储结果,算法简单明了,结果我实现之后,计算速度大大出乎我的遇料,比算乘方时还慢,经仔细想想电路中计算的长度不过8位,16位,32位,而且都是硬件实现,我们要算的是几千位,几万位。特别是两数位长度差很大时计算速度相当慢,如10000-3时要进行多少次链表运算啊。
    否定了这条算法,经不断思考,发现另一种方法可行,且效率仅次于减法。就是从高位向低位减,减时以被除数长度为单位,从高位取出大于被除数的字符串,和被除数相减,减的次数为结果,余数从剩下的除数高位再取出几位做补位,直到大于被除数。再减,循环减到被减数大于余数加上补位,那么这个新的余数作为结果返回。

【C/C++】大数四则运算的C++实现(转) - 八月照相馆 - 八月照相馆

 
 

    在程序时应注意:
    1、除法算法计算时是用的最高位开始向低位减,所以要注意指针的位置。
    2、余数和被减数相减时,一定要注意:一旦能够减开被除数时,一定要每从除数那里取一个字符时,结果也要对应补一个0。如111222/111。

参考资料:

http://blog.youkuaiyun.com/sunmenggmail/article/details/7532522

http://blog.youkuaiyun.com/agoago_2009/article/details/6862290

http://www.cnblogs.com/lsx54321/archive/2012/07/24/2606334.html

http://www.cnblogs.com/c840136/articles/2168405.html

http://bbs.youkuaiyun.com/topics/330053887

http://hi.baidu.com/eshifangs/item/1c86fe24deb5d15747996262

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值