17 lines
448 B
Ruby
17 lines
448 B
Ruby
harmonics = Enumerator.new do |y|
|
|
res = 0
|
|
(1..).each {|n| y << res += Rational(1, n) }
|
|
end
|
|
|
|
n = 20
|
|
The first #{n} harmonics (as rationals):""
|
|
harmonics.take(n).each_slice(5){|slice| puts "%20s"*slice.size % slice }
|
|
|
|
puts
|
|
milestones = (1..10).to_a
|
|
harmonics.each.with_index(1) do |h,i|
|
|
if h > milestones.first then
|
|
puts "The first harmonic number > #{milestones.shift} is #{h.to_f} at position #{i}"
|
|
end
|
|
break if milestones.empty?
|
|
end
|