大整数运算的一个有关问题

大整数运算的一个问题
本帖最后由 march_on 于 2013-09-30 10:21:06 编辑
大整数运算采用int数组表示大整数,一个数组元素如果对应一个位有点浪费空间,那么可以用一个数组元素表示4个位,也就是数组是10000进制.

请问为什么是4个位,5,6,7,8,9可以吗?

因为10^x<2^32中,得出x<=9.63.所以(10^4)^2<2^32,就是如果表示4个位,那么这4个位的平方还不会溢出,如果大于4位,那么就有可能溢出?不知道我这种理解对不对?
求指教

还有一个问题,假设大整数最大200位,使用数组表示,一个int表示4个位,那么为什么使用的最大位数是200/4+1呢?为什么最后要加一个1?是因为溢出吗?

多谢!

------解决方案--------------------
>请问为什么是4个位,5,6,7,8,9可以吗?
可以,只要你正确处理溢出问题。

>因为10^x<2^32中,得出x<=9.63.所以(10^4)^2<2^32,就是如果表示4个位,那么这4个位的平方还不会溢出,如果大于4位,那么就有可能溢出?不知道我这种理解对不对?
没错

>还有一个问题,假设大整数最大200位,使用数组表示,一个int表示4个位,那么为什么使用的最大位数是200/4+1呢?为什么最后要加一个1?是因为溢出吗?
看具体情况。一个可能性是答案可能不止200位,可能201位。
------解决方案--------------------
10000进制.

乘法不超过32Bits 可以直接乘,计算简便
不然5,6,7,8,9位,要用64Bits 乘法