2012-02-24 16 views
0

我需要能够做到1938757289258398239399949292934/14583949053930202而不使用任何外部java函数或库。我的每个数字都存储在一个链表中。我还可以做些什么?我需要在java中划分非常大的数字而不使用任何外部库(作业)

有人可以帮我分算法。我一直在尝试几个小时,而我没有得到任何地方。

+0

“BigInteger”算作“外部”吗? – Mysticial 2012-02-24 22:26:01

+2

这只是在计算机中使用两个数字列表而不是两个在纸上书写的数字列表的长分区。 – 2012-02-24 22:27:56

+0

假设减法,你可以做[数字分割](http://en.wikipedia.org/wiki/Division_%28digital%29)。 – trashgod 2012-02-24 22:43:40

回答

4

“外部”Java库? (如果您可以使用BigInteger,则内置BigInteger。)

否则,最简单的除法方法可能是二进制,如下所示。你知道log(a/b) = log(a) - log(b),所以你有估计结果中的位数。让r成为结果。在伪代码中,

for i = the most significant bit the result could have, iterating down to 0 
    if (r + 2^i) * b <= a 
    r += 2^i 
相关问题