Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions problem03.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Project Euler: What is the largest prime factor of the number 600851475143?

def largest_prime_factor(number)
for i in (2...number)
if number % i == 0
factor = number/i
return largest_prime_factor(factor)
end
end
return number
end

puts "Largest Prime Factor: #{largest_prime_factor(600851475143)}"
34 changes: 34 additions & 0 deletions problem05.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Project Euler: What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?
def get_prime_factors(number)
primes = []
for i in (2...number)
if number % i ==0
while number % i == 0
number = number / i
primes << i
end
end
end
primes = [1, number] if primes.empty?
return primes
end

def least_common_multiple(number)
factors_to_frequency = Hash.new
for i in (1..number)
prime_factors = get_prime_factors(i)
for number in prime_factors
factors_to_frequency[number] ||= prime_factors.count(number)
factors_to_frequency[number] = prime_factors.count(number) if prime_factors.count(number) > factors_to_frequency[number]
end
end

total = 1
factors_to_frequency.each do |key, value|
total = total * key ** value
end

return total
end

puts "Least Common Multiple: #{least_common_multiple(20)}"
18 changes: 18 additions & 0 deletions problem08.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Project Euler: Find the greatest product of five consecutive digits in the 1000-digit number.

my_number = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
chunk_size = 5

my_number = my_number.to_s
start_index = 0
max_product = 0
while (start_index < my_number.size)
chunk = my_number[start_index, chunk_size]
start_index += 1

product = chunk.split("").inject(1) { |total, n| total * n.to_i }

max_product = product if product > max_product
end

puts "Max Product: #{max_product}"