Numbers which are the cube roots of the product of their proper divisors: Difference between revisions
Content added Content deleted
m (→{{header|Free Pascal}}: clarify ?) |
(added julia entry) |
||
Line 650: | Line 650: | ||
49999{N |
49999{N |
||
223735</syntaxhighlight> |
223735</syntaxhighlight> |
||
=={{header|Julia}}== |
|||
<syntaxhighlight lang="julia"> |
|||
using Printf |
|||
function proper_divisors(n::Integer) |
|||
uptosqr = 1:isqrt(n) |
|||
divs = Iterators.filter(uptosqr) do m |
|||
n % m == 0 |
|||
end |
|||
pd_pairs = Iterators.map(divs) do d1 |
|||
d2 = div(n, d1) |
|||
(d1 == d2 || d1 == 1) ? (d1,) : (d1, d2) |
|||
end |
|||
return Iterators.flatten(pd_pairs) |
|||
end |
|||
function show_divisors_print(n::Integer, found::Integer) |
|||
if found <= 50 |
|||
@printf "%5i" n |
|||
if found % 10 == 0 |
|||
println() |
|||
end |
|||
elseif found in (500, 5_000, 50_000) |
|||
th = "$(found)th: " |
|||
@printf "%10s%i\n" th n |
|||
end |
|||
end |
|||
function show_divisors() |
|||
found = 0 |
|||
n = 1 |
|||
while found <= 50_000 |
|||
pds = proper_divisors(n) |
|||
if n^3 == prod(pds) |
|||
found += 1 |
|||
show_divisors_print(n, found) |
|||
end |
|||
n += 1 |
|||
end |
|||
end |
|||
show_divisors() |
|||
</syntaxhighlight> |
|||
{{Output}} |
|||
<pre> |
|||
1 24 30 40 42 54 56 66 70 78 |
|||
88 102 104 105 110 114 128 130 135 136 |
|||
138 152 154 165 170 174 182 184 186 189 |
|||
190 195 222 230 231 232 238 246 248 250 |
|||
255 258 266 273 282 285 286 290 296 297 |
|||
500th: 2526 |
|||
5000th: 23118 |
|||
50000th: 223735 |
|||
</pre> |
|||
=={{header|jq}}== |
=={{header|jq}}== |