Sylvester's sequence

func sylvester_sequence(n) {
    1..n -> reduce({|a| a*(a-1) + 1 }, 2)
}

say "First 10 terms in Sylvester's sequence:"
10.of(sylvester_sequence).each_kv{|k,v| '%2s: %s' % (k,v) -> say }

say "\nSum of reciprocals of first 10 terms: "
say 10.of(sylvester_sequence).sum {|n| 1/n }.as_dec(230)

Output:

First 10 terms in Sylvester's sequence:
 0: 2
 1: 3
 2: 7
 3: 43
 4: 1807
 5: 3263443
 6: 10650056950807
 7: 113423713055421844361000443
 8: 12864938683278671740537145998360961546653259485195807
 9: 165506647324519964198468195444439180017513152706377497841851388766535868639572406808911988131737645185443

Sum of reciprocals of first 10 terms: 
0.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996349359079841301329356

Last updated