X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=primes.rb;h=b254fab4f52ac97852e7f5867a5bb311960f3cde;hb=8a3efb8fe4dd942185ada009d83a894dd7492042;hp=7e2cfaacaa817e2418271d2544961271b0bb245a;hpb=f4d0d9084352d850254d228d4b9605c6fd699de5;p=project-euler.git diff --git a/primes.rb b/primes.rb index 7e2cfaa..b254fab 100644 --- a/primes.rb +++ b/primes.rb @@ -95,10 +95,21 @@ 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 @@ -107,5 +118,6 @@ class Integer def prime? @@primes.include? self + # @@primes.is_prime? self end end