Decision
The numbers in your example are just the products of the first prime numbers, which makes sense if you want to minimize the product and maximize the number of factors.
:
a (n) - N n
require 'prime'
n = 50000
p (1..n).find{|i| Prime.take(i+1).inject(:*) > n}
n = 10000000000:
p (1..n).find{|i| Prime.take(i+1).inject(:*) > n}
i+1 , n. i .
, i n, Range (1..n) . find , , , range.max n Float::INFINITY.
i, , , , : k , k!, O(Γ**-1(n)) .
?
, :
p Prime.inject { |product, prime|
new_product = prime * product
break product if new_product > n
new_product
}
:
p Prime.take(10).inject(:*)