0
我想在R中編寫一個函數來允許我將任何整數n分解爲n = 2^j + k,其中j> = 0和0 < = k < 2^j。我曾考慮過使用模數運算,但是沒有得到小於2^j的k。有沒有人有任何想法?謝謝!如何編程R中的函數將任意整數分解爲2的冪加上某個數?
我想在R中編寫一個函數來允許我將任何整數n分解爲n = 2^j + k,其中j> = 0和0 < = k < 2^j。我曾考慮過使用模數運算,但是沒有得到小於2^j的k。有沒有人有任何想法?謝謝!如何編程R中的函數將任意整數分解爲2的冪加上某個數?
對於n > 0
值,你可以試試這個功能:
pow2_decompose <- function(n) {
j <- trunc(log2(n))
k <- n - 2**j
return(list(j,k))
}
n <- 1289
j <- pow2_decompose(n)[[1]]
k <- pow2_decompose(n)[[2]]
cat(j,k,"\n")
#10 265
identical(2**j + k, n)
#[1] TRUE