読者です 読者をやめる 読者になる 読者になる

mu chance or much chance ?

日々の戯れ言

Project Euler 50

Project Euler

Problem50を解きました.

  • Consecutive prime sum

The prime 41, can be written as the sum of six consecutive primes:

41 = 2 + 3 + 5 + 7 + 11 + 13
This is the longest sum of consecutive primes that adds to a prime below one-hundred.

The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.

Which prime, below one-million, can be written as the sum of the most consecutive primes?

https://projecteuler.net/problem=50

問題は「100万未満の素数を連続する素数の総和で表したときに最長になるのはどの素数か求めよ」.

require 'prime'
k = 1_000_000
sum = 0
prime = Prime.each(k).to_a

i = 0
loop do
  if sum + prime[i] < k
    sum += prime[i]
  else
    break
  end
  i += 1
end

if Prime.prime?(sum)
  p sum
else
  i = 0
  loop do
    sum -= prime[i]
    if Prime.prime?(sum)
      p sum
      break
    else
      i += 1
    end
  end
end

連続する素数の総和が100万未満になる素数の最大値を求めて,
小さい素数から順番に引いて,それが素数であれば,
その値が求める答えです.
67 = 7 + 11 + 13 + 17 + 19の場合は,
どう扱えば良いんですかね・・・.