Project Euler Problem 5 Solution

2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?

My solution in Ruby:

def has_remainder?(var)
  1.upto(20) { |i| return true if var % i != 0 }
  false
end

number = 0
loop do
  number += 1
  break if !has_remainder?(number)
end
puts number

Project Euler Problem 4 Solution

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.

My solution in Ruby:

var = 0
999.downto(100) { |i|
  999.downto(100) { |j|
    prod = i * j
    var = [var, prod].max if prod.to_s == prod.to_s.reverse
  }
}
puts "Maximum palindrome is #{var}."

Project Euler Problem 3 Solution

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

My solution in Ruby:

def is_prime ( p )
  if p == 2
    return true
  elsif p <= 1 || p % 2 == 0
    return false
  else
    (3 .. Math.sqrt(p)).step(2) do |i|
      if p % i == 0
        return false
      end
    end
    return true
  end
end


i, num = 1, 1
loop do
  i += 1
  if 600851475143 % i == 0
    num = 600851475143 / i
    break if is_prime(num)
  end
end

puts "largest prime factor: " + num.to_s

Project Euler Problem 2 Solution

Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Find the sum of all the even-valued terms in the sequence which do not exceed four million.

My solution in Ruby:

t1, t2, even_sums = 1, 2, 2
loop do
  temp = t1 + t2
  break if temp > 3999999
  even_sums += temp if temp % 2 == 0
  t1 = t2
  t2 = temp
end

puts even_sums

Project Euler Problem 1 Solution

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

My solution in Ruby:

sum = 0
for i in 1..999
  sum += i if i % 3 == 0 or i % 5 == 0
end

puts sum