[前][次][番号順一覧][スレッド一覧]

ruby-changes:11138

From: yugui <ko1@a...>
Date: Wed, 4 Mar 2009 00:57:27 +0900 (JST)
Subject: [ruby-changes:11138] Ruby:r22741 (trunk): * lib/prime.rb (Prime::prime?): used to return a wrong answer.

yugui	2009-03-04 00:57:15 +0900 (Wed, 04 Mar 2009)

  New Revision: 22741

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22741

  Log:
    * lib/prime.rb (Prime::prime?): used to return a wrong answer.
      [ruby-core:22646].
    
    * test/test_prime.rb (test_prime?): test case for [ruby-core:22646].

  Modified files:
    trunk/ChangeLog
    trunk/lib/prime.rb
    trunk/test/test_prime.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22740)
+++ ChangeLog	(revision 22741)
@@ -1,3 +1,10 @@
+Wed Mar  4 00:54:43 2009  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* lib/prime.rb (Prime::prime?): used to return a wrong answer.
+	  [ruby-core:22646].
+
+	* test/test_prime.rb (test_prime?): test case for [ruby-core:22646].
+
 Tue Mar  3 17:10:09 2009  Nobuyoshi Nakada  <nobu@r...>
 
 	* ext/extmk.rb (extmake): removes object files no longer used and
Index: lib/prime.rb
===================================================================
--- lib/prime.rb	(revision 22740)
+++ lib/prime.rb	(revision 22741)
@@ -144,6 +144,8 @@
   # +value+:: an arbitrary integer to be checked.
   # +generator+:: optional. A pseudo-prime generator.
   def prime?(value, generator = Prime::Generator23.new)
+    value = -value if value < 0
+    return false if value < 2
     for num in generator
       q,r = value.divmod num
       return true if q < num
Index: test/test_prime.rb
===================================================================
--- test/test_prime.rb	(revision 22740)
+++ test/test_prime.rb	(revision 22741)
@@ -89,6 +89,11 @@
     end
   end
 
+  def test_default_instance_does_not_have_compatibility_methods
+    assert !Prime.instance.respond_to?(:succ)
+    assert !Prime.instance.respond_to?(:next)
+  end
+
   class TestInteger < Test::Unit::TestCase
     def test_prime_division
       pd = PRIMES.inject(&:*).prime_division
@@ -100,6 +105,10 @@
     end
 
     def test_prime?
+      # zero and unit
+      assert !0.prime?
+      assert !1.prime?
+
       # small primes
       assert 2.prime?
       assert 3.prime?
@@ -121,6 +130,12 @@
 
       # factorial
       assert !(2...100).inject(&:*).prime?
+
+      # negative
+      assert !-1.prime?
+      assert -2.prime?
+      assert -3.prime?
+      assert !-4.prime?
     end
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]