doukaku100: fun(n){ primes: fiber(){ yield 2; for(n: 3;; n += 2) for(d, m : 3, math::sqrt(n); d < m; d += 2) if(n % d == 0) break; nobreak yield n; } r: 1; n.to_s.split("").zip(primes){|d, p| r *= math::pow(p, d.to_i); } return r; }