Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Loops & PERFORM
Loops & PERFORM | Intermediate | COBOL

Prime Number Generator

Problem Description

Generate all prime numbers up to N.

Expected Output

List of prime numbers

Hints

Check divisibility from 2 to square root of number.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. PRIMES. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-N PIC 9(4). 01 WS-NUM PIC 9(4). 01 WS-DIV PIC 9(4). 01 WS-SQRT PIC 9(4). 01 WS-REM PIC 9(4). 01 WS-TEMP PIC 9(4). 01 WS-IS-PRIME PIC 9 VALUE 1. 01 WS-COUNT PIC 9(4) VALUE 0. PROCEDURE DIVISION. DISPLAY "FIND PRIMES UP TO: ". ACCEPT WS-N. DISPLAY "PRIME NUMBERS:". PERFORM VARYING WS-NUM FROM 2 BY 1 UNTIL WS-NUM > WS-N MOVE 1 TO WS-IS-PRIME COMPUTE WS-SQRT = FUNCTION SQRT(WS-NUM) PERFORM VARYING WS-DIV FROM 2 BY 1 UNTIL WS-DIV > WS-SQRT OR WS-IS-PRIME = 0 DIVIDE WS-NUM BY WS-DIV GIVING WS-TEMP REMAINDER WS-REM IF WS-REM = 0 MOVE 0 TO WS-IS-PRIME END-IF END-PERFORM IF WS-IS-PRIME = 1 DISPLAY WS-NUM ADD 1 TO WS-COUNT END-IF END-PERFORM. DISPLAY "TOTAL PRIMES FOUND: " WS-COUNT. STOP RUN.

Explanation:

Check divisibility up to square root. If no divisors found, its prime.