Ruby - determine if a number is a prime

Viewed 51239

I'm running through the problems on Project Euler to teach myself Ruby programming. I know there is a built-in function to do this, but I'm avoiding the built-in functions to help me learn.

So I have to write a method to determine if a number is a prime. The first method works, but the second doesn't. Can anyone explain why?

 def is_prime n
  for d in 2..(n - 1)
   if (n % d) == 0
    return false
   end
  end

  true
 end

 def is_prime2 n
  foundDivider = false
   for d in 2..(n - 1)
    foundDivider = ((n % d) == 0) or foundDivider
   end
  not foundDivider
 end
14 Answers
def prime?(n)
  if n <= 1
  return false

  else (2..n-1).to_a.all? do |integer|
   n % integer != 0

   end
  end
end

From my prime? lab. Started with eliminating all integers less than or equal to 1.

def prime(n)
    pn = [2]
    if n < 2
       return false

   else

     (2..n).each do |i|
       not_prime = false

        (2..Math.sqrt(i).ceil).each do |j|
           not_prime = true if i % j == 0    
        end
       pn.push(i) unless not_prime
    end

 end

return pn

end

p prime(30) gives

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

It will return true if the number is prime.

def prime_number(number)
  
    (2..(number-1)).each do |value|   
        
        if (number % value) == 0
            return false
        end
        
        return true
    end    
end

puts prime_number(4)

** FOR A SIMPLE SHORTED METHOD** FIRST INSTALL PRIME GEM

require 'prime'
`p prime.first(20)`

Now save that file as your desired name, this will generate the first 20 prime numbers Automatically!! :-)

Related