Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
73
Task/Additive-primes/COBOL/additive-primes.cobol
Normal file
73
Task/Additive-primes/COBOL/additive-primes.cobol
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. ADDITIVE-PRIMES.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 VARIABLES.
|
||||
03 MAXIMUM PIC 999.
|
||||
03 AMOUNT PIC 999.
|
||||
03 CANDIDATE PIC 999.
|
||||
03 DIGIT PIC 9 OCCURS 3 TIMES,
|
||||
REDEFINES CANDIDATE.
|
||||
03 DIGITSUM PIC 99.
|
||||
|
||||
01 PRIME-DATA.
|
||||
03 COMPOSITE-FLAG PIC X OCCURS 500 TIMES.
|
||||
88 PRIME VALUE ' '.
|
||||
03 SIEVE-PRIME PIC 999.
|
||||
03 SIEVE-COMP-START PIC 999.
|
||||
03 SIEVE-COMP PIC 999.
|
||||
03 SIEVE-MAX PIC 999.
|
||||
|
||||
01 OUT-FMT.
|
||||
03 NUM-FMT PIC ZZZ9.
|
||||
03 OUT-LINE PIC X(40).
|
||||
03 OUT-PTR PIC 99.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
BEGIN.
|
||||
MOVE 500 TO MAXIMUM.
|
||||
MOVE 1 TO OUT-PTR.
|
||||
PERFORM SIEVE.
|
||||
MOVE ZERO TO AMOUNT.
|
||||
PERFORM TEST-NUMBER
|
||||
VARYING CANDIDATE FROM 2 BY 1
|
||||
UNTIL CANDIDATE IS GREATER THAN MAXIMUM.
|
||||
DISPLAY OUT-LINE.
|
||||
DISPLAY SPACES.
|
||||
MOVE AMOUNT TO NUM-FMT.
|
||||
DISPLAY 'Amount of additive primes found: ' NUM-FMT.
|
||||
STOP RUN.
|
||||
|
||||
TEST-NUMBER.
|
||||
ADD DIGIT(1), DIGIT(2), DIGIT(3) GIVING DIGITSUM.
|
||||
IF PRIME(CANDIDATE) AND PRIME(DIGITSUM),
|
||||
ADD 1 TO AMOUNT,
|
||||
PERFORM WRITE-NUMBER.
|
||||
|
||||
WRITE-NUMBER.
|
||||
MOVE CANDIDATE TO NUM-FMT.
|
||||
STRING NUM-FMT DELIMITED BY SIZE INTO OUT-LINE
|
||||
WITH POINTER OUT-PTR.
|
||||
IF OUT-PTR IS GREATER THAN 40,
|
||||
DISPLAY OUT-LINE,
|
||||
MOVE SPACES TO OUT-LINE,
|
||||
MOVE 1 TO OUT-PTR.
|
||||
|
||||
SIEVE.
|
||||
MOVE SPACES TO PRIME-DATA.
|
||||
DIVIDE MAXIMUM BY 2 GIVING SIEVE-MAX.
|
||||
PERFORM SIEVE-OUTER-LOOP
|
||||
VARYING SIEVE-PRIME FROM 2 BY 1
|
||||
UNTIL SIEVE-PRIME IS GREATER THAN SIEVE-MAX.
|
||||
|
||||
SIEVE-OUTER-LOOP.
|
||||
IF PRIME(SIEVE-PRIME),
|
||||
MULTIPLY SIEVE-PRIME BY 2 GIVING SIEVE-COMP-START,
|
||||
PERFORM SIEVE-INNER-LOOP
|
||||
VARYING SIEVE-COMP
|
||||
FROM SIEVE-COMP-START BY SIEVE-PRIME
|
||||
UNTIL SIEVE-COMP IS GREATER THAN MAXIMUM.
|
||||
|
||||
SIEVE-INNER-LOOP.
|
||||
MOVE 'X' TO COMPOSITE-FLAG(SIEVE-COMP).
|
||||
Loading…
Add table
Add a link
Reference in a new issue