12345678910111213141516171819202122232425262728293031323334353637383940 |
- #!/usr/bin/ruby
- # Author: Daniel "Trizen" Șuteu
- # License: GPLv3
- # Website: https://github.com/trizen
- # Which prime, below one-million, can be written as the sum of the most consecutive primes?
- # https://projecteuler.net/problem=50
- # Runtime: 1.345s
- define limit = 1e6
- var sum = 0
- var primes = []
- var p = 2
- loop {
- (sum += p)/1.2 > limit && break; # /1.2 is a lucky optimization?
- primes << p
- p.next_prime!
- }
- var l = primes.len
- var arr = []
- for (var i = 0; i <= l; ++i) {
- var sum = primes[i]
- for (var j = i+1; (j <= l-i) && ((sum += primes[j]) < limit); ++j) {
- if (sum.is_prime) {
- arr << [j-i + 1, sum, i, j]
- }
- }
- }
- var res = arr.max_by { .head }
- say "#{res[1]} is the sum of #{res[0]} starting with #{prime(res[2]+1)}"
|