Add divisors to math.primes.factors
							parent
							
								
									3c91ad043f
								
							
						
					
					
						commit
						4d5392fe56
					
				| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
USING: help.markup help.syntax math sequences ;
 | 
			
		||||
IN: math.primes.factors
 | 
			
		||||
 | 
			
		||||
{ factors group-factors unique-factors } related-words
 | 
			
		||||
{ divisors factors group-factors unique-factors } related-words
 | 
			
		||||
 | 
			
		||||
HELP: factors
 | 
			
		||||
{ $values { "n" "a positive integer" } { "seq" sequence } }
 | 
			
		||||
| 
						 | 
				
			
			@ -21,3 +21,7 @@ HELP: unique-factors
 | 
			
		|||
HELP: totient
 | 
			
		||||
{ $values { "n" "a positive integer" } { "t" integer } }
 | 
			
		||||
{ $description { "Return the number of integers between 1 and " { $snippet "n-1" } " that are relatively prime to " { $snippet "n" } "." } } ;
 | 
			
		||||
 | 
			
		||||
HELP: divisors
 | 
			
		||||
{ $values { "n" "a positive integer" } { "seq" sequence } }
 | 
			
		||||
{ $description { "Return the ordered list of divisors of " { $snippet "n" } ", including 1 and " { $snippet "n" } "." } } ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
USING: math.primes.factors tools.test ;
 | 
			
		||||
USING: math.primes.factors sequences tools.test ;
 | 
			
		||||
 | 
			
		||||
{ { 999983 999983 1000003 } } [ 999969000187000867 factors ] unit-test
 | 
			
		||||
{ { } } [ -5 factors ] unit-test
 | 
			
		||||
| 
						 | 
				
			
			@ -8,3 +8,5 @@ USING: math.primes.factors tools.test ;
 | 
			
		|||
{ 0 } [ 1 totient ] unit-test
 | 
			
		||||
{ { 425612003 } } [ 425612003 factors ] unit-test
 | 
			
		||||
{ { 13 4253 15823 32472893749823741 } } [ 28408516453955558205925627 factors ] unit-test
 | 
			
		||||
{ { 1 2 3 4 6 8 12 24 } } [ 24 divisors ] unit-test
 | 
			
		||||
{ 24 } [ 360 divisors length ] unit-test
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
! Copyright (C) 2007-2009 Samuel Tardieu.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: arrays combinators kernel make math math.functions
 | 
			
		||||
math.primes sequences ;
 | 
			
		||||
math.primes math.ranges sequences sequences.product sorting ;
 | 
			
		||||
IN: math.primes.factors
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
| 
						 | 
				
			
			@ -41,3 +41,7 @@ PRIVATE>
 | 
			
		|||
        { [ dup 2 < ] [ drop 0 ] }
 | 
			
		||||
        [ dup unique-factors [ 1 [ 1- * ] reduce ] [ product ] bi / * ]
 | 
			
		||||
    } cond ; foldable
 | 
			
		||||
 | 
			
		||||
: divisors ( n -- seq )
 | 
			
		||||
    group-factors [ first2 [0,b] [ ^ ] with map ] map
 | 
			
		||||
    [ product ] product-map natural-sort ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue