ruby-changes:12392
From: yugui <ko1@a...>
Date: Mon, 13 Jul 2009 22:52:07 +0900 (JST)
Subject: [ruby-changes:12392] Ruby:r24091 (trunk): * lib/prime.rb (Prime#prime_division): now decomposes
yugui 2009-07-13 22:51:49 +0900 (Mon, 13 Jul 2009) New Revision: 24091 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24091 Log: * lib/prime.rb (Prime#prime_division): now decomposes negative integer into a decomposition with element [-1, 1]. * test/test_prime.rb: test for it. Modified files: trunk/ChangeLog trunk/lib/prime.rb trunk/test/test_prime.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 24090) +++ ChangeLog (revision 24091) @@ -1,3 +1,10 @@ +Mon Jul 13 22:49:50 2009 Yuki Sonoda (Yugui) <yugui@y...> + + * lib/prime.rb (Prime#prime_division): now decomposes + negative integer into a decomposition with element [-1, 1]. + + * test/test_prime.rb: test for it. + Mon Jul 13 22:28:03 2009 NAKAMURA Usaku <usa@r...> * io.c (pipe_open): handles leaked on win32 when an error occurs. Index: lib/prime.rb =================================================================== --- lib/prime.rb (revision 24090) +++ lib/prime.rb (revision 24091) @@ -194,7 +194,12 @@ # def prime_division(value, generator= Prime::Generator23.new) raise ZeroDivisionError if value == 0 - pv = [] + if value < 0 + value = -value + pv = [[-1, 1]] + else + pv = [] + end for prime in generator count = 0 while (value1, mod = value.divmod(prime) Index: test/test_prime.rb =================================================================== --- test/test_prime.rb (revision 24090) +++ test/test_prime.rb (revision 24091) @@ -98,10 +98,15 @@ def test_prime_division pd = PRIMES.inject(&:*).prime_division assert_equal PRIMES.map{|p| [p, 1]}, pd + + pd = (-PRIMES.inject(&:*)).prime_division + assert_equal [-1, *PRIMES].map{|p| [p, 1]}, pd end def test_from_prime_division assert_equal PRIMES.inject(&:*), Integer.from_prime_division(PRIMES.map{|p| [p,1]}) + + assert_equal -PRIMES.inject(&:*), Integer.from_prime_division([[-1, 1]] + PRIMES.map{|p| [p,1]}) end def test_prime? -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/