您需要多少字节来表示新的Mersenne素数作为整数?

时间:2013-02-10 00:14:02

标签: math

2^57,885,161 - 1存储为整数需要多少字节?

2 个答案:

答案 0 :(得分:6)

假设我们正在做两个补码,那8位等于一个字节;我们至少需要(57,585,161 + 7)/ 8字节。

如果你需要一种简单的方法可以解释它是通过使用数学归纳法来说2 ^ 32 - 1是32位整数所代表的最大数,而32是2的基数,可以被8整除,我们假定的每字节位数。 2 ^ 32 - 1将是4个字节。

扩展这个假设的定义你得到的数字是2 ^ 57885161,它不能被8整除,但是加上它是7。所以你留下了2 ^ 57885168,当你将它除以8时,得到的结果是7235646字节。

这只是GregS评论的解释。

答案 1 :(得分:3)

答案很大程度上取决于你将如何处理它。如果你正在编写一个专门用于Mersenne素数的程序,你可能只需要四个字节来存储它,并理解它代表了一个Mersenne素数指数。

如果要将其存储为典型的未压缩“大整数”,则需要大约7235646个字节(ceildiv(57885161,8))。有些格式比其他格式更有效。例如,由于格式开销(因为Python使用30位数字),Python long格式使用7718048字节将此数字存储在我的机器((2**57885161 - 1).__sizeof__())上。