Description Usage Arguments Value Examples
Factor an integer into primes
1 2 3 |
n |
an integer or a polynomial |
code |
return only the M2 code? (default: |
... |
... |
a data frame with integer columns prime
and
power
or m2_pointer
referencing the factorization
in M2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | ## Not run: requires Macaulay2
##### basic usage
########################################
2^2 * 3^7 * 5^2 # = 218700
factor_n(218700)
factor_n.(218700)
(df <- factor_n(218700))
df$prime
df$power
str(df)
factor_n(218700, code = TRUE)
##### other options
########################################
(integer_pointer <- m2.("218700"))
m2_name(integer_pointer)
factor_n(integer_pointer, code = TRUE)
factor_n(integer_pointer)
factor_n(3234432540)
factor_n(323443254223453)
factor_n(rpois(1, 1e4))
##### known issues
########################################
# R doesn't handle big ints well. note in the following
# the m2 code number is different than the supplied number
factor_n(32344325422364353453, code = TRUE)
# this can be circumvented by passing a string instead
factor_n("32344325422364353453", code = TRUE)
# but if the factors are large, R can't handle the parsing well
factor_n("32344325422364353453")
# here's a workaround:
factor_pointer <- factor_n.("32344325422364353453")
m2_meta(factor_pointer, "ext_str")
extract_factors <- function(pointer) {
require(stringr)
str <- m2_meta(pointer, "ext_str")
str <- str_sub(str, 19, -2)
str <- str_extract_all(str, "\\{[0-9]+,[0-9]+\\}")[[1]]
str <- str_sub(str, 2, -2)
str <- str_split(str, ",")
df <- as.data.frame(t(simplify2array(str)))
names(df) <- c("prime", "power")
df
}
(df <- extract_factors(factor_pointer))
# using gmp (currently broken)
# factor_n("32344325422364353453", gmp = TRUE)
m2("11 * 479 * 6138607975396537")
11 * 479 * 6138607975396537
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.