我有一个数字n,我想要一种方法将它变成格式k * 2 ^ n-1。请注意,n将是一个非常大的数字,大约100000+位数,这就是为什么我想把它变成这种形式。 n将始终为奇数,是整数和实数。
如果不可能那么可以制成k * b ^ n-1格式吗?我更喜欢2的基数,但任何基数都可以。
答案 0 :(得分:1)
使用n
和k * 2^m - 1
格式m != 0
来表示m != 1
是一个奇数是不够的。这是因为偶数不能总是表示为基数为2的乘积 - 除了2 = 2^1
本身。
以数字n = 11
为例。为了符合格式,我们必须添加1,因此我们尝试以n’ = 12
格式表示k * 2^m
。 n’
的素数分解为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