diff options
Diffstat (limited to 'factors/prime_factorization.go')
| -rw-r--r-- | factors/prime_factorization.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/factors/prime_factorization.go b/factors/prime_factorization.go index 69d0e08..f91a2cf 100644 --- a/factors/prime_factorization.go +++ b/factors/prime_factorization.go @@ -45,7 +45,7 @@ func (factors PrimeFactorization) Exponent(p uint) uint { return factors.exponents[p] } -// ExponentMap creates and returns a map mapping primes to their exponents. +// ExponentMap returns a map mapping primes to their exponents. func (factors PrimeFactorization) ExponentMap() map[uint]uint { exponentMap := make(map[uint]uint, len(factors.exponents)) for p, e := range factors.exponents { @@ -54,6 +54,17 @@ func (factors PrimeFactorization) ExponentMap() map[uint]uint { return exponentMap } +// Primes returns a slice containing all of the primes with nonzero exponents +func (factors PrimeFactorization) Primes() []uint { + primes := make([]uint, 0, len(factors.exponents)) + for p := range factors.exponents { + if factors.exponents[p] > 0 { + primes = append(primes, p) + } + } + return primes +} + // Size returns how many primes in this factorization have nonzero exponents. func (factors PrimeFactorization) Size() int { return len(factors.exponents) |
