Ruby循环和代码功能

时间:2016-07-14 23:54:02

标签: ruby

以下是原始问题euler project 50    正如问题所述“连续素数低于千分之一,加上素数,包含21个术语”

所以我开始在21个学期之后找到答案

  

接下来如果!arr [i..i + d + c] .reduce(:+)。prime?

问题出在

  

打破if!arr [i..i + d + c] .reduce(:+)。prime?

如果没有连续素数添加到素数,我想尽快离开while循环。事实证明,在该范围内没有连续的质数来补偿我的逻辑。请赐教。

 require 'mathn'

def consecutive_prime_sum
    arr = []

    Prime.each do |i|
        break if i > 1000000
        arr << i
    end 


    max,sum = 0,0
    d = 20
    arr.each_index do |i|   
        c = 1
        next if !arr[i..i+d+c].reduce(:+).prime?

        while i+d+c <= arr.size - 1
            break if !arr[i..i+d+c].reduce(:+).prime?

            if c > max && arr[i..i+d+c].reduce(:+) > sum && arr[i..i+d+c].reduce(:+).prime?
                max = c 
                sum = arr[i..i+d+c].reduce(:+)
            end 

        c= c + 1    
        end     
    end 

    sum

end 


p consecutive_prime_sum

0 个答案:

没有答案
相关问题