Module: PrimeTime::Calculate
- Defined in:
- lib/prime_time/calculate.rb
Class Method Summary collapse
-
.is_prime?(n) ⇒ Boolean
worst case O(sqrt(n)/2).
- .primes(n) ⇒ Object
Class Method Details
.is_prime?(n) ⇒ Boolean
worst case O(sqrt(n)/2)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/prime_time/calculate.rb', line 18 def is_prime?(n) n = n.to_i return false if n == 1 || n < 0 # 1 and negative numbers are not prime return true if n == 2 # 2 is a special case the only even prime return false if n % 2 == 0 # even numbers are not prime # start with 3 and go up to the square root of n to see is divisable divisor = 3 while divisor <= Math.sqrt(n) return false if n % divisor == 0 divisor += 2 end true end |
.primes(n) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/prime_time/calculate.rb', line 5 def primes(n) result = [] i = 2 while result.size < n do result << i if is_prime?(i) (i % 2 == 0)? i += 1 : i += 2 end result end |