Kaprekar numbers: Difference between revisions

Content added Content deleted
(Added Erlang version)
m (→‎{{header|Sidef}}: code simplifications)
Line 4,363: Line 4,363:
=={{header|Sidef}}==
=={{header|Sidef}}==
{{trans|Perl}}
{{trans|Perl}}
<lang ruby>require('ntheory')
<lang ruby>var kap = Hash()
var kap = Hash()


for n (1..15) {
for n in (1..15) {
var np = (10**n - 1)
var np = (10**n - 1)
%S<ntheory>.fordivisors({ |d|
np.divisors.each { |d|
var dp = np//d
var dp = np/d
if ((d `gcd` dp) == 1) {
if (is_coprime(dp, d)) {
kap{ dp == 1 ? d : d*invmod(d, dp) } := 0 ++
kap{ dp == 1 ? d : d*invmod(d, dp) } := 0 ++
}
}
}, np)
}
}
}


var nums = kap.keys.map{.to_n}.sort
var nums = kap.keys.map{ Num(_) }.sort


for n (6 .. 14) {
for n in (6 .. 14) {
var np = (10**n - 1)
var np = (10**n - 1)
printf("Kaprekar numbers <= 10^%2d: %5d\n", n, nums.count_by { .<= np })
printf("Kaprekar numbers <= 10^%2d: %5d\n", n, nums.count_by { .<= np })