From 38320624a508fa647272235982cf804c07fee04a Mon Sep 17 00:00:00 2001 From: Phillip Marfoglio <dcphillip@gmail.com> Date: Fri, 28 Feb 2014 00:35:41 -0600 Subject: [PATCH] PreWork --- problem03.rb | 19 +++++++++++++++++++ problem05.rb | 30 ++++++++++++++++++++++++++++++ problem08.rb | 18 ++++++++++++++++++ 3 files changed, 67 insertions(+) diff --git a/problem03.rb b/problem03.rb index e69de29..7db0421 100644 --- a/problem03.rb +++ b/problem03.rb @@ -0,0 +1,19 @@ +def prime? n + (2..(n-1)).each { |x| return false if n % x == 0 } + true +end + +n = 600_851_475_143 +a = [] +product_sum = 1 +x = 2 + +while product_sum < n + if n % x == 0 && prime?(x) + a << x + product_sum *= x + end + x += 1 +end + +puts "The answer is #{a.last}" \ No newline at end of file diff --git a/problem05.rb b/problem05.rb index e69de29..784c1b3 100644 --- a/problem05.rb +++ b/problem05.rb @@ -0,0 +1,30 @@ +upto = 20 + +def prime? x + (2..x-1).each { |y| return false if x % y == 0 } + true +end + +def increment upto + a = 1 + (1..upto).each { |x| a*= x if prime? x } + a +end + +def no_remainder? x, upto + (1..upto).each { |y| return false if x % y != 0 } + true +end + +increment = increment upto +x = increment +try_number = 1 + +while true + if no_remainder? x, upto + puts "The smallest number is #{x}" + break + end + try_number += 1 + x = try_number * increment +end \ No newline at end of file diff --git a/problem08.rb b/problem08.rb index e69de29..873b408 100644 --- a/problem08.rb +++ b/problem08.rb @@ -0,0 +1,18 @@ +n = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 + +consec = 5 + +def product integer + prod = 1 + integer.to_s.length.times { |i| prod *= integer.to_s[i].to_i } + prod +end + +array_results = [] +(0..n.to_s.length - consec).each do |counter| + select = n.to_s[counter..counter + consec - 1] + prod = product select + array_results << prod +end + +puts "The max product of #{consec} consecutive digits in the integer n is #{array_results.max}."