Project Euler Problem 10 Solution

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

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


sum = 0
for i in 2..2000000
  if is_prime(i)
    sum += i
  end
end
puts sum

Project Euler Problem 8 Solution

Find the greatest product of five consecutive digits in the 1000-digit number.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

My solution in Ruby:

var = %&
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450&

arr = var.split( // )
arr.delete "\n"
big = 0;
for i in 0..arr.length - 5
  next if Integer(arr[i]) == 0
  tmp = Integer(arr[i])
  1.upto(4) { |j| tmp = tmp * Integer(arr[i + j]) }
  big = tmp if tmp > big
end
puts big

Project Euler Problem 7 Solution

By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6^(th) prime is 13.

What is the 10001^(st) prime number?

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

prime_count = 6
prime_number = 13
number = 13
while prime_count < 10001 do
  number += 2
  if is_prime(number)
    prime_count += 1
    prime_number = number
  end
end
puts '***********'
puts "#{prime_count}: #{prime_number}"

Project Euler Problem 6 Solution

The sum of the squares of the first ten natural numbers is,
1^(2) + 2^(2) + … + 10^(2) = 385

The square of the sum of the first ten natural numbers is,
(1 + 2 + … + 10)^(2) = 55^(2) = 3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

My solution in Ruby:

def sum_and_square(j, k)
  tmp = 0
  for i in 1..100
    tmp += i**j
  end
  tmp**k
end

puts sum_and_square(1,2) - sum_and_square(2,1)

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