Disarium numbers: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add Modula-2) |
Not a robot (talk | contribs) (Add Cobol) |
||
Line 782: | Line 782: | ||
2427 |
2427 |
||
2646798</pre> |
2646798</pre> |
||
=={{header|COBOL}}== |
|||
<syntaxhighlight lang="cobol"> IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. DISARIUM. |
|||
DATA DIVISION. |
|||
WORKING-STORAGE SECTION. |
|||
01 VARIABLES. |
|||
03 CANDIDATE PIC 9(9). |
|||
03 DIGITS PIC 9 OCCURS 9 TIMES, REDEFINES CANDIDATE. |
|||
03 IDX PIC 99. |
|||
03 EXPONENT PIC 99. |
|||
03 DGT-POWER PIC 9(9). |
|||
03 DGT-POWER-SUM PIC 9(9). |
|||
03 CAND-OUT PIC Z(8)9. |
|||
03 AMOUNT PIC 99 VALUE 18. |
|||
PROCEDURE DIVISION. |
|||
BEGIN. |
|||
PERFORM DISARIUM-TEST VARYING CANDIDATE FROM ZERO BY 1 |
|||
UNTIL AMOUNT IS ZERO. |
|||
STOP RUN. |
|||
DISARIUM-TEST. |
|||
MOVE ZERO TO DGT-POWER-SUM. |
|||
MOVE 1 TO EXPONENT, IDX. |
|||
INSPECT CANDIDATE TALLYING IDX FOR LEADING ZEROES. |
|||
PERFORM ADD-DIGIT-POWER UNTIL IDX IS GREATER THAN 9. |
|||
IF DGT-POWER-SUM IS EQUAL TO CANDIDATE, |
|||
MOVE CANDIDATE TO CAND-OUT, |
|||
DISPLAY CAND-OUT, |
|||
SUBTRACT 1 FROM AMOUNT. |
|||
ADD-DIGIT-POWER. |
|||
COMPUTE DGT-POWER = DIGITS(IDX) ** EXPONENT. |
|||
ADD DGT-POWER TO DGT-POWER-SUM. |
|||
ADD 1 TO EXPONENT. |
|||
ADD 1 TO IDX.</syntaxhighlight> |
|||
{{out}} |
|||
<pre> 0 |
|||
1 |
|||
2 |
|||
3 |
|||
4 |
|||
5 |
|||
6 |
|||
7 |
|||
8 |
|||
9 |
|||
89 |
|||
135 |
|||
175 |
|||
518 |
|||
598 |
|||
1306 |
|||
1676 |
|||
2427</pre> |
|||
=={{header|Cowgol}}== |
=={{header|Cowgol}}== |