我只是想知道在处理大数字时有哪些不同的除法策略。我所说的大数字是指~50 位数字。
例如
9237639100273856744937827364095876289200667937278 / 8263744826271827396629934467882946252671
当两个数字都很大时,长除法似乎失去了用处......
我认为一种可能性是通过除数的乘法进行计数,直到您超过被除数,但如果是上面示例中的被除数除以一个小数,例如4、那么计算量就很大了。
那么,有没有简单、干净的方法来做到这一点?
您使用什么语言/平台?这很可能已经解决了,因此您不需要从头开始实现它。例如。哈斯克尔有Integer
类型,Java 的java.math.BigInteger
类,.NETSystem.Numerics.BigInteger
结构等
如果您的问题确实是一个理论问题,我建议您阅读 Knuth,《计算机编程的艺术》,第 2 卷,第 4.3.1 节。你正在寻找的东西在那里被称为“算法D”。下面是该算法的 C 实现以及简短的解释:http://hackers-delight.org.ua/059.htm http://hackers-delight.org.ua/059.htm
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)