約数を列挙するプログラム

n = gets.to_i

def divisor(n)
  res = []
  for i in 1..(n+1)
    break if i*i > n
    next if n % i != 0
    res << i
    res << (n/i) if n / i != i
  end
  return res.sort
end

divisor(n).join(' ')

# 入力例1
# n = 25
#=> 1 5 25

# 入力例2
# n = 9999999999999
# => 1 3 9 53 79 159 237 477 711 4187 12561 37683 265371653 796114959 2388344877 14064697609 20964360587 42194092827 62893081761 126582278481 188679245283 1111111111111 3333333333333 9999999999999