Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
127
Task/Arithmetic-numbers/COBOL/arithmetic-numbers.cob
Normal file
127
Task/Arithmetic-numbers/COBOL/arithmetic-numbers.cob
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. ARITHMETIC-NUMBERS.
|
||||
AUTHOR. CONVERTED-FROM-JAVA.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 COUNTERS.
|
||||
05 ARITHMETIC-COUNT PIC 9(7) VALUE 0.
|
||||
05 COMPOSITE-COUNT PIC 9(7) VALUE 0.
|
||||
05 N PIC 9(7) VALUE 1.
|
||||
05 LINE-COUNT PIC 99 VALUE 0.
|
||||
|
||||
01 FACTOR-RELATED.
|
||||
05 FACTOR-COUNT PIC 9(4) VALUE 0.
|
||||
05 FACTOR-SUM PIC 9(9) VALUE 0.
|
||||
05 I PIC 9(7).
|
||||
05 J PIC 9(7).
|
||||
05 PRODUCT PIC 9(9).
|
||||
05 DIV-REMAINDER PIC 9(9).
|
||||
05 MOD-RESULT PIC 9(9).
|
||||
05 TEMP-FACTOR PIC 9(7).
|
||||
05 FOUND-FLAG PIC X VALUE 'N'.
|
||||
|
||||
01 FACTOR-TABLE.
|
||||
05 FACTORS OCCURS 1000 TIMES INDEXED BY FX.
|
||||
10 FACTOR-VALUE PIC 9(7) VALUE 0.
|
||||
|
||||
01 OUTPUT-FIELDS.
|
||||
05 N-FORMATTED PIC ZZZ.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
MAIN-PROCEDURE.
|
||||
PERFORM UNTIL ARITHMETIC-COUNT > 1000000
|
||||
PERFORM FIND-FACTORS
|
||||
PERFORM CALCULATE-SUM
|
||||
DIVIDE FACTOR-SUM BY FACTOR-COUNT
|
||||
GIVING MOD-RESULT REMAINDER DIV-REMAINDER
|
||||
|
||||
IF DIV-REMAINDER = 0
|
||||
ADD 1 TO ARITHMETIC-COUNT
|
||||
|
||||
IF FACTOR-COUNT > 2
|
||||
ADD 1 TO COMPOSITE-COUNT
|
||||
END-IF
|
||||
|
||||
IF ARITHMETIC-COUNT <= 100
|
||||
PERFORM DISPLAY-NUMBER
|
||||
END-IF
|
||||
|
||||
EVALUATE ARITHMETIC-COUNT
|
||||
WHEN 1000
|
||||
WHEN 10000
|
||||
WHEN 100000
|
||||
WHEN 1000000
|
||||
PERFORM DISPLAY-MILESTONE
|
||||
END-EVALUATE
|
||||
END-IF
|
||||
|
||||
ADD 1 TO N
|
||||
END-PERFORM
|
||||
|
||||
STOP RUN.
|
||||
|
||||
FIND-FACTORS.
|
||||
INITIALIZE FACTOR-TABLE
|
||||
MOVE 0 TO FACTOR-COUNT
|
||||
|
||||
MOVE 1 TO TEMP-FACTOR
|
||||
PERFORM ADD-UNIQUE-FACTOR
|
||||
|
||||
MOVE N TO TEMP-FACTOR
|
||||
PERFORM ADD-UNIQUE-FACTOR
|
||||
|
||||
MOVE 2 TO I
|
||||
PERFORM UNTIL I * I > N
|
||||
DIVIDE N BY I GIVING J REMAINDER DIV-REMAINDER
|
||||
|
||||
IF DIV-REMAINDER = 0
|
||||
MOVE I TO TEMP-FACTOR
|
||||
PERFORM ADD-UNIQUE-FACTOR
|
||||
|
||||
MOVE J TO TEMP-FACTOR
|
||||
PERFORM ADD-UNIQUE-FACTOR
|
||||
END-IF
|
||||
|
||||
ADD 1 TO I
|
||||
END-PERFORM.
|
||||
|
||||
ADD-UNIQUE-FACTOR.
|
||||
MOVE 'N' TO FOUND-FLAG
|
||||
PERFORM VARYING FX FROM 1 BY 1 UNTIL FX > FACTOR-COUNT
|
||||
IF FACTOR-VALUE(FX) = TEMP-FACTOR
|
||||
MOVE 'Y' TO FOUND-FLAG
|
||||
EXIT PERFORM
|
||||
END-IF
|
||||
END-PERFORM
|
||||
|
||||
IF FOUND-FLAG = 'N'
|
||||
ADD 1 TO FACTOR-COUNT
|
||||
MOVE TEMP-FACTOR TO FACTOR-VALUE(FACTOR-COUNT)
|
||||
END-IF.
|
||||
|
||||
CALCULATE-SUM.
|
||||
MOVE 0 TO FACTOR-SUM
|
||||
PERFORM VARYING FX FROM 1 BY 1 UNTIL FX > FACTOR-COUNT
|
||||
ADD FACTOR-VALUE(FX) TO FACTOR-SUM
|
||||
END-PERFORM.
|
||||
|
||||
DISPLAY-NUMBER.
|
||||
MOVE N TO N-FORMATTED
|
||||
DISPLAY N-FORMATTED WITH NO ADVANCING
|
||||
ADD 1 TO LINE-COUNT
|
||||
|
||||
IF LINE-COUNT = 10
|
||||
DISPLAY " "
|
||||
MOVE 0 TO LINE-COUNT
|
||||
ELSE
|
||||
DISPLAY " " WITH NO ADVANCING
|
||||
END-IF.
|
||||
|
||||
DISPLAY-MILESTONE.
|
||||
DISPLAY " "
|
||||
DISPLAY ARITHMETIC-COUNT "th arithmetic number is " N
|
||||
DISPLAY "Number of composite arithmetic numbers <= "
|
||||
N ": " COMPOSITE-COUNT.
|
||||
Loading…
Add table
Add a link
Reference in a new issue