18 lines
478 B
Ruby
18 lines
478 B
Ruby
require "prime"
|
|
|
|
class Integer
|
|
def proper_divisors
|
|
return [] if self == 1
|
|
primes = prime_division.flat_map{|prime, freq| [prime] * freq}
|
|
(1...primes.size).each_with_object([1]) do |n, res|
|
|
primes.combination(n).map{|combi| res << combi.inject(:*)}
|
|
end.flatten.uniq
|
|
end
|
|
end
|
|
|
|
(1..10).map{|n| puts "#{n}: #{n.proper_divisors}"}
|
|
|
|
size, select = (1..20_000).group_by{|n| n.proper_divisors.size}.max
|
|
select.each do |n|
|
|
puts "#{n} has #{size} divisors"
|
|
end
|