毛のはえたようなもの

インターネット的なものをつらつらとかきつらねる。

Problem 5

2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。
では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。

Problem 5 - PukiWiki

まず範囲内各数字の因数のリストを作って、それらの累乗が範囲を越えない程度に何乗できるかを探すを方針で。

def find_prime_number(num)
  p_list =[]
  (2..num).each{|i|
    if  num%i == 0 then
      k = true
      (2..(i/2).to_i).each{|j| k=false and break if i%j == 0 }
      p_list.push(i) and num = (num/i).to_i if k
      break if p_list.last >= num
    end
  }
  return  p_list
end

limit = 20
pn_list = []
ans = limit >0 ? 1 : 0

# make a list of primary number
(1..limit).each{|i|  pn_list = pn_list | find_prime_number(i)}

#count
pn_list.each{|p|
  times = 0
  (1..limit).each{|i|
    times = i and break if  p ** (i+1) > limit
  }
  ans = ans * ( p ** times)
}

p ans

答え:232792560