Idoneal numbers: Difference between revisions
Content added Content deleted
(Created Nim solution.) |
(Added Julia) |
||
Line 639: | Line 639: | ||
120 130 133 165 168 177 190 210 232 240 253 273 280 |
120 130 133 165 168 177 190 210 232 240 253 273 280 |
||
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
312 330 345 357 385 408 462 520 760 840 1320 1365 1848 |
||
</pre> |
|||
=={{header|Julia}}== |
|||
{{Trans|ALGOL 68}} |
|||
<syntaxhighlight lang="julia"> |
|||
begin # find idoneal numbers - numbers that cannot be written as ab + bc + ac |
|||
# where 0 < a < b < c |
|||
# there are 65 known idoneal numbers |
|||
local count = 0 |
|||
local maxCount = 65 |
|||
local n = 0 |
|||
local iNumbers = collect( 1 : maxCount ) |
|||
while count < maxCount |
|||
n += 1 |
|||
local idoneal = true |
|||
local a = 1 |
|||
while ( a + 2 ) < n && idoneal |
|||
local b = a + 1 |
|||
while true |
|||
local ab = a * b |
|||
local sum = 0 |
|||
if ab < n |
|||
local c = ( n - ab ) ÷ ( a + b ) |
|||
sum = ab + ( c * ( b + a ) ) |
|||
if c > b && sum == n |
|||
idoneal = false |
|||
end |
|||
b += 1 |
|||
end |
|||
if sum > n || idoneal == 0 || ab >= n |
|||
break |
|||
end |
|||
end |
|||
a += 1 |
|||
end |
|||
if idoneal |
|||
count += 1 |
|||
iNumbers[ count ] = n |
|||
end |
|||
end |
|||
println( iNumbers ) |
|||
end |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 16, 18, 21, 22, 24, 25, 28, 30, 33, 37, 40, 42, 45, 48, 57, 58, 60, 70, 72, 78, 85, 88, 93, 102, 105, 112, 120, 130, 133, 165, 168, 177, 190, 210, 232, 240, 253, 273, 280, 312, 330, 345, 357, 385, 408, 462, 520, 760, 840, 1320, 1365, 1848] |
|||
</pre> |
</pre> |
||