for n in (2..20, 65) { var steps = [] var orig = n for (var f = n.factor; true; f = n.factor) { steps << f n = Num(f.join) break if n.is_prime } say ("HP(#{orig}) = ", steps.map { .join('_') }.join(' -> ')) }