Module: PrimeTime::Calculate

Defined in:
lib/prime_time/calculate.rb

Class Method Summary collapse

Class Method Details

.is_prime?(n) ⇒ Boolean

worst case O(sqrt(n)/2)

Returns:

  • (Boolean)


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