Idoneal numbers: Difference between revisions
Content added Content deleted
(Added PL/0) |
(→{{header|RPL}}: Creation) |
||
Line 804: | Line 804: | ||
273 280 312 330 345 357 385 408 462 520 |
273 280 312 330 345 357 385 408 462 520 |
||
760 840 1320 1365 1848</pre> |
760 840 1320 1365 1848</pre> |
||
=={{header|RPL}}== |
|||
{{trans|Python}} |
|||
{{works with|Halcyon Calc|4.2.7}} |
|||
{| class="wikitable" |
|||
! RPL code |
|||
! Comment |
|||
|- |
|||
| |
|||
≪ → num |
|||
≪ 1 SF |
|||
1 num FOR a |
|||
a 1 + num FOR b |
|||
IF a b DUP2 * + + num > THEN |
|||
num 'b' STO |
|||
ELSE b 1 + num FOR c |
|||
a b * b c * + a c * + |
|||
IF DUP num == THEN |
|||
DROP 1 CF num DUP DUP 'a' STO 'b' STO 'c' STO |
|||
ELSE IF num > THEN |
|||
num 'c' STO END |
|||
END |
|||
NEXT END |
|||
NEXT NEXT |
|||
1 FS? |
|||
≫ ≫ ‘IDNL?’ STO |
|||
| |
|||
''' IDNL?''' ''( n -- boolean )'' |
|||
Return value will be given by flag #1 |
|||
for a in range(1, num): |
|||
for b in range(a + 1, num): |
|||
if a * b + a + b > num: |
|||
break |
|||
for c in range(b + 1, num): |
|||
sum3 = a * b + b * c + a * c |
|||
if sum3 == num: |
|||
return False |
|||
if sum3 > num: |
|||
break |
|||
. |
|||
. |
|||
. |
|||
Return boolean value |
|||
. |
|||
|} |
|||
{{in}} |
|||
<pre> |
|||
≪ {} 1 255 FOR n IF n IDNL? THEN n + END NEXT ≫ EVAL |
|||
≪ {} 256 2000 FOR n IF n IDNL? THEN n + END NEXT ≫ EVAL |
|||
</pre> |
|||
{{out}} |
|||
<pre> |
|||
2: { 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 } |
|||
1: { 273 280 312 330 345 357 385 408 462 520 760 840 1320 1365 1848 } |
|||
</pre> |
|||
=={{header|Swift}}== |
=={{header|Swift}}== |