如何获得特定格式的数字?

时间:2014-05-23 04:29:58

标签: python algorithm math python-3.x

我有一个数字n,我想要一种方法将它变成格式k * 2 ^ n-1。请注意,n将是一个非常大的数字,大约100000+位数,这就是为什么我想把它变成这种形式。 n将始终为奇数,是整数和实数。

如果不可能那么可以制成k * b ^ n-1格式吗?我更喜欢2的基数,但任何基数都可以。

1 个答案:

答案 0 :(得分:1)

使用nk * 2^m - 1格式m != 0来表示m != 1是一个奇数是不够的。这是因为偶数不能总是表示为基数为2的乘积 - 除了2 = 2^1本身。

以数字n = 11为例。为了符合格式,我们必须添加1,因此我们尝试以n’ = 12格式表示k * 2^mn’的素数分解为n’ = 2 * 2 * 3 = 2^2 * 3^1,正如您所看到的,有一个因子不是2。因此,单个k * 2^m不能代表数字12。

m唯一可能的值为零和一。那些可以表示任何奇数整数:

# m = 0
(n + 1) * 2^0 - 1

# m = 1
((n + 1) / 2) * 2^1 - 1