func is_duffinian(n) { n.is_composite && n.is_coprime(n.sigma) } say "First 50 Duffinian numbers:" say 50.by(is_duffinian) say "\nFirst 15 Duffinian triplets:" 15.by{|n| ^3 -> all {|k| is_duffinian(n+k) } }.each {|n| printf("(%s, %s, %s)\n", n, n+1, n+2) }