Idoneal numbers: Difference between revisions
Content added Content deleted
m (→{{header|ALGOL 68}}: Performance tweak) |
(Added ABC) |
||
Line 47: | Line 47: | ||
</syntaxhighlight> |
</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> |
|||
=={{header|ABC}}== |
|||
<syntaxhighlight lang="abc"> |
|||
HOW TO RETURN a over b: RETURN floor( a / b ) |
|||
HOW TO REPORT is.idoneal n: |
|||
PUT 1 IN idoneal |
|||
PUT 0 IN a |
|||
PUT n over 2 IN max.a |
|||
WHILE idoneal = 1 AND a < max.a: |
|||
PUT a + 1 IN a |
|||
PUT a IN b |
|||
PUT n IN c |
|||
PUT 0 IN sum |
|||
PUT 1 IN again |
|||
WHILE b < c AND b < n - 1 AND sum <= n AND idoneal = 1: |
|||
PUT b + 1 IN b |
|||
PUT a * b IN ab |
|||
PUT ( n - ab ) over ( a + b ) IN c |
|||
PUT ab + ( c * ( b + a ) ) IN sum |
|||
IF c > b AND sum = n: |
|||
PUT 0 IN idoneal |
|||
REPORT idoneal = 1 |
|||
PUT 0 IN count |
|||
PUT 0 IN n |
|||
WHILE count < 65: |
|||
PUT n + 1 IN n |
|||
IF is.idoneal n: |
|||
WRITE n >> 5 |
|||
PUT count + 1 IN count |
|||
IF count mod 13 = 0: WRITE / |
|||
</syntaxhighlight> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |