Van Eck sequence: Difference between revisions
Content added Content deleted
(Put Algol W in the right place) |
Not a robot (talk | contribs) (Add COBOL) |
||
Line 1,019: | Line 1,019: | ||
<pre>First 10 terms: (0 0 1 0 2 0 2 2 1 6) |
<pre>First 10 terms: (0 0 1 0 2 0 2 2 1 6) |
||
Terms 991 to 1000 terms: (4 7 30 25 67 225 488 0 10 136)</pre> |
Terms 991 to 1000 terms: (4 7 30 25 67 225 488 0 10 136)</pre> |
||
=={{header|COBOL}}== |
|||
<lang cobol> IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. VAN-ECK. |
|||
DATA DIVISION. |
|||
WORKING-STORAGE SECTION. |
|||
01 CALCULATION. |
|||
02 ECK PIC 999 OCCURS 1000 TIMES. |
|||
02 I PIC 9999. |
|||
02 J PIC 9999. |
|||
01 OUTPUT-FORMAT. |
|||
02 ITEM PIC ZZ9. |
|||
02 IDX PIC ZZZ9. |
|||
PROCEDURE DIVISION. |
|||
B. PERFORM GENERATE-ECK. |
|||
PERFORM SHOW VARYING I FROM 1 BY 1 UNTIL I = 11. |
|||
PERFORM SHOW VARYING I FROM 991 BY 1 UNTIL I = 1001. |
|||
STOP RUN. |
|||
SHOW. |
|||
MOVE I TO IDX. |
|||
MOVE ECK(I) TO ITEM. |
|||
DISPLAY 'ECK(' IDX ') = ' ITEM. |
|||
GENERATE-ECK SECTION. |
|||
B. SET ECK(1) TO 0. |
|||
SET I TO 1. |
|||
PERFORM GENERATE-TERM |
|||
VARYING I FROM 2 BY 1 UNTIL I = 1001. |
|||
GENERATE-TERM SECTION. |
|||
B. SUBTRACT 2 FROM I GIVING J. |
|||
LOOP. |
|||
IF J IS LESS THAN 1 GO TO TERM-IS-NEW. |
|||
IF ECK(J) = ECK(I - 1) GO TO TERM-IS-OLD. |
|||
SUBTRACT 1 FROM J. |
|||
GO TO LOOP. |
|||
TERM-IS-NEW. |
|||
SET ECK(I) TO 0. |
|||
GO TO DONE. |
|||
TERM-IS-OLD. |
|||
COMPUTE ECK(I) = (I - J) - 1. |
|||
DONE. EXIT.</lang> |
|||
{{out}} |
|||
<pre>ECK( 1) = 0 |
|||
ECK( 2) = 0 |
|||
ECK( 3) = 1 |
|||
ECK( 4) = 0 |
|||
ECK( 5) = 2 |
|||
ECK( 6) = 0 |
|||
ECK( 7) = 2 |
|||
ECK( 8) = 2 |
|||
ECK( 9) = 1 |
|||
ECK( 10) = 6 |
|||
ECK( 991) = 4 |
|||
ECK( 992) = 7 |
|||
ECK( 993) = 30 |
|||
ECK( 994) = 25 |
|||
ECK( 995) = 67 |
|||
ECK( 996) = 225 |
|||
ECK( 997) = 488 |
|||
ECK( 998) = 0 |
|||
ECK( 999) = 10 |
|||
ECK(1000) = 136</pre> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |