RosettaCodeData/Task/Mian-Chowla-sequence/Ruby/mian-chowla-sequence-2.rb

19 lines
432 B
Ruby

mian_chowla = Enumerator.new do |yielder|
mc, sums = [1], {}
1.step do |n|
mc << n
if mc.none?{|k| sums[k+n] } then
mc.each{|k| sums[k+n] = true }
yielder << n
else
mc.pop # n didn't work, get rid of it.
end
end
end
res = mian_chowla.take(100).to_a
s = " of the Mian-Chowla sequence are:\n"
puts "The first 30 terms#{s}#{res[0,30].join(' ')}\n
Terms 91 to 100#{s}#{res[90,10].join(' ')}"