fork(2) download
  1. s=->(x){A=[];def k(x)A<<x
  2. y=Prime.prime_division x;n=0..y.size-1
  3. n.each{|i|n.to_a.combination(i+1).each{|c|c.each{|z|v=y.dup
  4. v[z][1]>1?v[z]=[v[z].join.to_i,1]:next
  5. k v.inject(1){|s,b|s*b[0]**b[1]}}}}end;k x;A.uniq.sort}
  6.  
  7.  
  8. #usage
  9.  
  10. #load from the standard library
  11. require"prime"
  12.  
  13. #call function and print result
  14. $<.read.split(' ').each do |num|
  15. puts "#{num} => #{s.call(num.to_i).join(' ')}"
  16. end
Success #stdin #stdout #stderr 0.05s 7696KB
stdin
11 16 360 605 2048 48
stdout
11 => 11
16 => 16 24 69
360 => 140 360 770 1035 1219 1280 2875 3680
605 => 560 605 840 2415
2048 => 211 2048
48 => 28 48 72 154 207 256 575 736 1196 6578
stderr
prog.rb:1: warning: already initialized constant A
prog.rb:1: warning: already initialized constant A
prog.rb:1: warning: already initialized constant A
prog.rb:1: warning: already initialized constant A
prog.rb:1: warning: already initialized constant A