Skip to content

Instantly share code, notes, and snippets.

@broguinn
Created August 30, 2013 00:57
Show Gist options
  • Save broguinn/6385225 to your computer and use it in GitHub Desktop.
Save broguinn/6385225 to your computer and use it in GitHub Desktop.
prime
def is_prime?(number)
if number < 2 || !(number.is_a?(Integer))
false
else
(2..((number ** 0.5).floor)).all? { |possible| number % possible != 0 } ? true : false
end
end
def prime(number)
if number < 1 || !(number.is_a?(Integer))
raise TypeError.new "the number given must be an integert greater than zero"
end
primes = []
potential_prime = 2
while primes.length < number do
primes << potential_prime if is_prime?(potential_prime)
potential_prime += 1
end
primes[-1]
end
require 'rspec'
require 'prime'
describe 'is_prime?' do
it 'returns false for ineligible numbers' do
is_prime?(-3).should be_false
is_prime?(0).should be_false
is_prime?(1).should be_false
is_prime?(1.5).should be_false
end
it 'tells if a number is prime or not' do
is_prime?(3).should be_true
is_prime?(6).should be_false
end
end
describe 'prime' do
it 'raises an exception if the input is not an integer greater than 0' do
expect { prime(0) }.to raise_exception
end
it 'returns an nth prime number' do
prime(100).should eq 541
prime(10_001).should eq 104743
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment