-# See Project Euler #3
-def factors num {
- let list = []
- let candidate = 2
- let max = math::sqrt num
- while candidate <= max {
- list.push candidate if num %% candidate
- candidate = candidate + 1
- }
- list
-}
-
-def prime? num {
- factors(num).length() == 0
-}
-
-let seen = 0
let num = 1
-while seen < 10001 {
+let primes = []
+while primes.length < 10001 {
num = num + 1
- seen = seen + 1 if prime? num
+ primes.push num unless primes.any? => p { num %% p }
}
-println num
+println primes[primes.length - 1]
println list::iota(0, digits.length - span + 1).map(=> index {
digits[index..index + span].split().map(integer::from).reduce(1, => a, b { a * b })
}).reduce(0, math::max)
-
-println list::iota(0, digits.length - span + 1).map(| digits[_.._ + span].split().map(integer::from).reduce(1, {*})).reduce(0, math::max)