000010 IDENTIFICATION DIVISION.
000020 PROGRAM-ID. PRIME-NO-PROG.
000030 AUTHOR. TIMOTHY R P BROWN.
000040
000050******************************************
000060* PROGRAM TO CALCULATE PRIME NUMBERS *
000070******************************************
000080
000090 ENVIRONMENT DIVISION.
000100 INPUT-OUTPUT SECTION.
000110 FILE-CONTROL.
000120
000130 SELECT OUT-FILE ASSIGN TO 'PRIME-NO.TXT'
000140 ORGANIZATION IS LINE SEQUENTIAL.
000150********************************************
000160 DATA DIVISION.
000170 FILE SECTION.
000180
000190 FD OUT-FILE.
000200 01 NO-OUT PIC X(80).
000210********************************************
000220 WORKING-STORAGE SECTION.
000230
000240 01 EVEN-FLAG PIC X.
000250 88 NUM-EVEN VALUE 'Y'.
000260 01 PRIME-FLAG PIC X .
000270 88 IS-PRIME VALUE 'Y'.
000280
000290 01 TOP-VALUE PIC 9(7) VALUE ZERO.
000300
000310 01 COUNTERS.
000320 03 Y-COUNT PIC 9(6) OCCURS 1000.
000330
000340 01 CALC-NO PIC 9(6) VALUE ZERO.
000350
000360 01 SUBS.
000370 03 X-SUB PIC 9(6) VALUE 3.
000380 01 PRINT-SUBS.
000390 03 P-COUNT-X PIC 9(6) VALUE 1.
000400
000410 01 A PIC 9(6) VALUE ZERO.
000420 01 B PIC 9(6) VALUE ZERO.
000430 01 C PIC 9(6) VALUE ZERO.
000440 01 D PIC 9(6) VALUE ZERO.
000450 01 Z PIC 9(6) VALUE ZERO.
000460 01 PRIME-NO-COUNT PIC 9(6) VALUE 2.
000465
000470 01 PRINT-LINE.
000480 03 P-NUM1 PIC Z(5)9 VALUE ZERO.
000490 03 P-NUM2 PIC Z(5)9 VALUE ZERO.
000500 03 P-NUM3 PIC Z(5)9 VALUE ZERO.
000510 03 P-NUM4 PIC Z(5)9 VALUE ZERO.
000520 03 P-NUM5 PIC Z(5)9 VALUE ZERO.
000530
000540 01 EXIT-KEY PIC X VALUE SPACE.
000545
000550*******************************************************
000560 PROCEDURE DIVISION.
000570 MAIN-PARA.
000580 OPEN OUTPUT OUT-FILE
000590 DISPLAY 'ENTER VALUE TO WHICH PRIME NUMBERS '
000600 DISPLAY 'ARE TO BE CALCULATED BETWEEN 1 AND 999,999'
000602 MOVE 1 TO Y-COUNT (1)
000605 MOVE 2 TO Y-COUNT (2)
000610
000620*ENTER VALUE
000630 PERFORM UNTIL TOP-VALUE > 0
000640 ACCEPT TOP-VALUE
000650 END-PERFORM
000660
000670*ZEROISE TABLE
000680 MOVE ZEROS TO COUNTERS
000690
000700*DETERMINE PRIME NUMBERS AND PLACE IN TABLE
000710
000720 PERFORM VARYING CALC-NO FROM 3 BY 1
000730 UNTIL CALC-NO > TOP-VALUE
000740 DISPLAY CALC-NO
000750 MOVE 1 TO C
000760 MOVE 'N' TO PRIME-FLAG
000770
000780*IS NUMBER EVEN (BUT NOT 2)?
000790
000800 DIVIDE CALC-NO BY 2 GIVING A REMAINDER Z
000830 IF Z = 0 THEN MOVE 'Y' TO EVEN-FLAG
000840 ELSE MOVE 'N' TO EVEN-FLAG
000850 END-IF
000860
000865**********************************************************
000870*DIVIDE EACH ODD NUMBER BY NUMBERS UP TO HALF THE CALC-NO
000880*LOOP EXITED WHEN A NUMBER DIVIDES IT WITH NO REMAINDER
000890*OR WHEN ALL NUMBERS CHECKED
000895**********************************************************
000900 IF NOT NUM-EVEN THEN
000910 PERFORM VARYING D FROM 3 BY 1
000920 UNTIL (C = 0) OR (D > ((CALC-NO + 1) / 2))
000930 DIVIDE CALC-NO BY D GIVING A REMAINDER C
000940 END-PERFORM
000950 END-IF
000960
000970 IF C = 0 THEN MOVE 'N' TO PRIME-FLAG
000980 ELSE MOVE 'Y' TO PRIME-FLAG
000990 END-IF
001000
001010*WHEN PRIME NUMBER DEFINED, MOVE IT INTO TABLE
001020 IF IS-PRIME THEN
001030 MOVE CALC-NO TO Y-COUNT (X-SUB)
001040 ADD 1 TO X-SUB PRIME-NO-COUNT
001050 END-IF
001060 END-PERFORM
001070
001080*STORE THE FINAL VALUE OF X-SUB BEFORE RE-USING IT
001090 MOVE X-SUB TO P-COUNT-X
001100 MOVE ZERO TO X-SUB
001110***************************************************
001120*WRITE TABLE
001130 PERFORM VARYING X-SUB FROM 1 BY 5
001140 UNTIL X-SUB > P-COUNT-X
001150 MOVE Y-COUNT (X-SUB) TO P-NUM1
001160 MOVE Y-COUNT (X-SUB + 1) TO P-NUM2
001170 MOVE Y-COUNT (X-SUB + 2) TO P-NUM3
001180 MOVE Y-COUNT (X-SUB + 3) TO P-NUM4
001190 MOVE Y-COUNT (X-SUB + 4) TO P-NUM5
001200 WRITE NO-OUT FROM PRINT-LINE AFTER 2 LINE
001230 END-PERFORM
001240
001250 DISPLAY 'CALCULATIONS COMPLETE - ' PRIME-NO-COUNT
001260 ' PRIME NUMBERS CALCULATED'
001270 CLOSE OUT-FILE
001280 STOP RUN.
¤ Dauer der Verarbeitung: 0.39 Sekunden
(vorverarbeitet)
¤
|
Haftungshinweis
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.
|