Tau function: Difference between revisions
Content added Content deleted
Not a robot (talk | contribs) (Add BCPL) |
Not a robot (talk | contribs) (Add COBOL) |
||
Line 402: | Line 402: | ||
end |
end |
||
end start_up</lang> |
end start_up</lang> |
||
{{out}} |
|||
<pre> 1 2 2 3 2 4 2 4 3 4 2 6 2 4 4 5 2 6 2 6 |
|||
4 4 2 8 3 4 4 6 2 8 2 6 4 4 4 9 2 4 4 8 |
|||
2 8 2 6 6 4 2 10 3 6 4 6 2 8 4 8 4 4 2 12 |
|||
2 4 6 7 4 8 2 6 4 8 2 12 2 4 6 6 4 8 2 10 |
|||
5 4 2 12 4 4 4 8 2 12 4 6 4 4 4 12 2 6 6 9</pre> |
|||
=={{header|COBOL}}== |
|||
{{trans|C}} |
|||
<lang cobol> IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. TAU-FUNCTION. |
|||
DATA DIVISION. |
|||
WORKING-STORAGE SECTION. |
|||
01 TAU-VARS. |
|||
03 TOTAL PIC 999. |
|||
03 N PIC 999. |
|||
03 FILLER REDEFINES N. |
|||
05 FILLER PIC 99. |
|||
05 FILLER PIC 9. |
|||
88 N-EVEN VALUES 0, 2, 4, 6, 8. |
|||
03 P PIC 999. |
|||
03 P-SQUARED PIC 999. |
|||
03 N-DIV-P PIC 999V999. |
|||
03 FILLER REDEFINES N-DIV-P. |
|||
05 NEXT-N PIC 999. |
|||
05 FILLER PIC 999. |
|||
88 DIVISIBLE VALUE ZERO. |
|||
03 F-COUNT PIC 999. |
|||
01 CONTROL-VARS. |
|||
03 I PIC 999. |
|||
01 OUT-VARS. |
|||
03 OUT-ITM PIC ZZ9. |
|||
03 OUT-STR PIC X(80) VALUE SPACES. |
|||
03 OUT-PTR PIC 99 VALUE 1. |
|||
PROCEDURE DIVISION. |
|||
BEGIN. |
|||
PERFORM SHOW-TAU VARYING I FROM 1 BY 1 |
|||
UNTIL I IS GREATER THAN 100. |
|||
STOP RUN. |
|||
SHOW-TAU. |
|||
MOVE I TO N. |
|||
PERFORM TAU. |
|||
MOVE TOTAL TO OUT-ITM. |
|||
STRING OUT-ITM DELIMITED BY SIZE INTO OUT-STR |
|||
WITH POINTER OUT-PTR. |
|||
IF OUT-PTR IS EQUAL TO 61, |
|||
DISPLAY OUT-STR, |
|||
MOVE 1 TO OUT-PTR. |
|||
TAU. |
|||
MOVE 1 TO TOTAL. |
|||
PERFORM POWER-OF-2 UNTIL NOT N-EVEN. |
|||
MOVE ZERO TO P-SQUARED. |
|||
PERFORM ODD-FACTOR THRU ODD-FACTOR-LOOP |
|||
VARYING P FROM 3 BY 2 |
|||
UNTIL P-SQUARED IS GREATER THAN N. |
|||
IF N IS GREATER THAN 1, |
|||
MULTIPLY 2 BY TOTAL. |
|||
POWER-OF-2. |
|||
ADD 1 TO TOTAL. |
|||
DIVIDE 2 INTO N. |
|||
ODD-FACTOR. |
|||
MULTIPLY P BY P GIVING P-SQUARED. |
|||
MOVE 1 TO F-COUNT. |
|||
ODD-FACTOR-LOOP. |
|||
DIVIDE N BY P GIVING N-DIV-P. |
|||
IF DIVISIBLE, |
|||
MOVE NEXT-N TO N, |
|||
ADD 1 TO F-COUNT, |
|||
GO TO ODD-FACTOR-LOOP. |
|||
MULTIPLY F-COUNT BY TOTAL.</lang> |
|||
{{out}} |
{{out}} |
||
<pre> 1 2 2 3 2 4 2 4 3 4 2 6 2 4 4 5 2 6 2 6 |
<pre> 1 2 2 3 2 4 2 4 3 4 2 6 2 4 4 5 2 6 2 6 |
||
Line 456: | Line 530: | ||
2 4 6 7 4 8 2 6 4 8 2 12 2 4 6 6 4 8 2 10 |
2 4 6 7 4 8 2 6 4 8 2 12 2 4 6 6 4 8 2 10 |
||
5 4 2 12 4 4 4 8 2 12 4 6 4 4 4 12 2 6 6 9</pre> |
5 4 2 12 4 4 4 8 2 12 4 6 4 4 4 12 2 6 6 9</pre> |
||
=={{header|D}}== |
=={{header|D}}== |
||
{{trans|C++}} |
{{trans|C++}} |