diff --git a/extra/math/primes/factors/factors.factor b/extra/math/primes/factors/factors.factor index b841d49f7d..66ec748535 100644 --- a/extra/math/primes/factors/factors.factor +++ b/extra/math/primes/factors/factors.factor @@ -6,36 +6,36 @@ IN: math.primes.factors [ swap uncons >r pick call r> swap (factors) ] [ 3drop ] if ; + dup 1 > [ swap uncons >r pick call r> swap (factors) ] [ 3drop ] if ; : (decompose) ( n quot -- seq ) - [ lprimes rot (factors) ] { } make ; + [ lprimes rot (factors) ] { } make ; PRIVATE> : factors ( n -- seq ) - [ (factor) ] (decompose) ; foldable + [ (factor) ] (decompose) ; foldable : count-factors ( n -- seq ) - [ (count) ] (decompose) ; foldable + [ (count) ] (decompose) ; foldable : unique-factors ( n -- seq ) - [ (unique) ] (decompose) ; foldable + [ (unique) ] (decompose) ; foldable : totient ( n -- t ) - dup 2 < [ - drop 0 - ] [ - [ unique-factors dup 1 [ 1- * ] reduce swap product / ] keep * - ] if ; foldable + dup 2 < [ + drop 0 + ] [ + dup unique-factors dup 1 [ 1- * ] reduce swap product / * + ] if ; foldable