summaryrefslogtreecommitdiff
path: root/factors/prime_factorization.go
diff options
context:
space:
mode:
Diffstat (limited to 'factors/prime_factorization.go')
-rw-r--r--factors/prime_factorization.go13
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)