Reputation: 217
I'm been given an assignment to create a method that takes an integer and returns true
if it is prime and false
if it is not. The code I wrote below is not returning false
for non-prime numbers. Any ideas?
def prime?(integer)
(2...integer).each do |divisor|
if integer % divisor == 0
return false
else
return true
end
end
end
Upvotes: 2
Views: 107
Reputation: 5773
Your else
condition kicks in immediately if it is not divisible by any divisor. You need to move it outside the loop.
def prime? (integer)
(2...integer).each do |divisor|
if integer % divisor == 0
return false
end
end
true
end
One-liner with none?
(thanks sawa)
(2...integer).none? {|i| integer % i == 0}
Upvotes: 7