RosettaCodeData/Task/Proper-divisors/Ruby/proper-divisors-1.rb
2023-07-01 13:44:08 -04:00

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