Problem 5 (written in Ruby)


numbers = (1..20).to_a
numbers.delete(1)
optimized_numbers = []
numbers.each do |n|
bigger = false
(n..numbers[-1]).each do |m|
if m % n == 0 && n < m then
bigger = true
break
end
end

optimized_numbers << n if not bigger
end

optimized_numbers = optimized_numbers.sort.reverse

n = 20
while true do

if n & 15 == 0 then
valid = true
optimized_numbers.each do |m|
if n % m != 0 then
valid = false
break
end
end
if valid then
puts "The number is: #{n}"
break
end
end

n += 1
end

Problem:
http://odz.sakura.ne.jp/projecteuler/index.php?Problem%205

ビット演算を使うことで3分ほど短縮することができました。
Core Duo 2.18GhzなMacbook Proではだいたい2:25ほどで求まります。