向量在对某个数字x进行素数分解后包含以下数值数据:
c <- c(2,2,2,3)
这是24 的素数分解
矩阵的第一列应包含素数2和3第二列应该包含素数的幂。
例如
| 2 3 |
| 3 1 |
我该如何创建这个矩阵呢。
使用tabulate
:
f <- as.integer(gmp::factorize(24))
cnts <- tabulate(f)[-1]
matrix(c(unique(f), cnts[cnts > 0L]), ncol = 2)
#> [,1] [,2]
#> [1,] 2 3
#> [2,] 3 1
或使用table
:
f <- table(as.integer(gmp::factorize(24)))
matrix(c(as.integer(names(f)), f), ncol = 2)
#> [,1] [,2]
#> [1,] 2 3
#> [2,] 3 1
这里是一个基本的R选项,通过定义一个函数来分解一个整数,例如
f <- function(n) {
k <- 2
v <- c()
while (k <= n) {
if (n %% k == 0) {
v <- c(v, k)
n <- n / k
} else {
k <- k + 1
}
}
as.data.frame(table(v))
}
你会看到,例如
> f(24)
v Freq
1 2 3
2 3 1
> f(46788)
v Freq
1 2 2
2 3 1
3 7 1
4 557 1