Done puzzle 51
[project-euler.git] / primes.rb
index 23fd44737758478dfe7cad13b159755b3f94a9c9..b254fab4f52ac97852e7f5867a5bb311960f3cde 100644 (file)
--- a/primes.rb
+++ b/primes.rb
@@ -95,9 +95,29 @@ class Primes
     while n >= @primes.last
       add_next_prime!
     end
-    # @primes.include?(n)
     !!(@primes.bsearch {|i| n - i})
   end
 
+  # Use this if you're only testing a few primes and not needing to generate many more.
+  def is_prime?(n)
+    return true if n == 2
+    return false if n < 2
+    limit = Math.sqrt(n).floor
+    while @primes.last <= limit
+      add_next_prime!
+    end
+    index = @primes.bsearch_index {|i| i > limit} || @primes.length
+    @primes[0..index].none? {|i| n % i == 0}
+  end
+
 end
 
+
+class Integer
+  @@primes = Primes.instance
+  
+  def prime?
+    @@primes.include? self
+    # @@primes.is_prime? self
+  end
+end