List of prime factors with repetition
Is there a simple command on Sage wich gives, in place of factor(720)= 2^4 * 3^2 * 5, the list [2, 2, 2, 2, 3, 3, 5] of prime factors with repetition?
asked 2016-05-21 16:14:39 +0100
This post is a wiki. Anyone with karma >750 is welcome to improve it.
Is there a simple command on Sage wich gives, in place of factor(720)= 2^4 * 3^2 * 5, the list [2, 2, 2, 2, 3, 3, 5] of prime factors with repetition?
Some potentially useful variations, building on previous answers and comments by @calc314 and @logomath.
The function factor
returns a factorization.
sage: F = factor(2016)
sage: F
2^5 * 3^2 * 7
This secretly wraps a list of pairs (prime, multiplicity), and you can get this list.
sage: list(F)
[(2, 5), (3, 2), (7, 1)]
You can also iterate through this list of pairs directly.
sage: for pm in F: print pm
(2, 5)
(3, 2)
(7, 1)
This means you can use list comprehension in smart ways.
sage: [f[0] for f in F for _ in range(f[1])]
[2, 2, 2, 2, 2, 3, 3, 7]
Same as above, but calling (p, m) the pairs.
sage: [p for (p, m) in F for _ in range(m)]
[2, 2, 2, 2, 2, 3, 3, 7]
Getting a list of repetitions of each prime.
sage: [([p] * m) for (p, m) in F]
[[2, 2, 2, 2, 2], [3, 3], [7]]
Flattening it to get the list of prime factors with multiplicity.
sage: flatten([([p] * m) for (p, m) in F])
[2, 2, 2, 2, 2, 3, 3, 7]
Using add
to sum lists starting from the empty list
(included as an optional parameter to add
).
sage: add([[p] * m for (p, m) in F], [])
[2, 2, 2, 2, 2, 3, 3, 7]
(Edit.) Same but using an iterator instead of a list.
sage: add(([p] * m for (p, m) in F), [])
[2, 2, 2, 2, 2, 3, 3, 7]
I don't know of a direct command. Here is one option, though.
F= factor(2016)
result=[f[0] for f in F for i in range(f[1])]
result
You may wish to look up the factor command for more details and examples.
Please start posting anonymously - your entry will be published after you log in or create a new account.
Asked: 2016-05-21 16:14:39 +0100
Seen: 8,003 times
Last updated: May 23 '16
Finding prime factorization of ideals in number rings
How to get the canonical prime factorization, with zero exponents too
Why does factor() assume that variables are real?
Prime ideals and "Point on Spectrum"
Convert from int to double and back in Cython
Factoring bivariate polynomials w.r.t. a single variable
Why does @parallel change my outputs?
Factorization of non-commutative Laurent polynomials