Problem 5
2520 は 1 から 10 の数字の全ての整数で割り切れる数字であり、そのような数字の中では最小の値である。
Problem 5 - PukiWiki
では、1 から 20 までの整数全てで割り切れる数字の中で最小の値はいくらになるか。
まず範囲内各数字の因数のリストを作って、それらの累乗が範囲を越えない程度に何乗できるかを探すを方針で。
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