C This file: http://ftp.aset.psu.edu/pub/ger/fortran/hdk/primes.for C C======FIND FIRST NPRIME PRIMES. C CLASSROOM EXAMPLE - HDK, 1974. INTEGER NPRIME,COUNT,P LOGICAL ISPRIM NPRIME=3000 COUNT=1 C--Print the first prime, the 501th, the 1001th, ..., the last prime. WRITE(*,*)'THE FIRST',NPRIME,'PRIMES ARE:' WRITE(*,*) '2 IS PRIME' IF(NPRIME.EQ. 1) STOP DO 1 P = 3,999999999,2 IF(ISPRIM(P)) THEN COUNT = COUNT + 1 IF (MOD(COUNT-1,500).EQ.0 .OR. COUNT.EQ.NPRIME) x WRITE(*,*) P,'IS PRIME.' IF(COUNT .EQ. NPRIME) STOP END IF 1 CONTINUE WRITE(*,*) 'NEXT PRIME IS LARGER THAN 10**9' STOP END LOGICAL FUNCTION ISPRIM(P) INTEGER P,I IF(P .LT. 2) THEN ISPRIM=.FALSE. RETURN END IF DO 1 I = 2,P IF(I * I .GT. P) THEN ISPRIM=.TRUE. RETURN ELSE IF(MOD(P,I) .EQ. 0) THEN ISPRIM=.FALSE. RETURN END IF 1 CONTINUE WRITE(*,*) 'THIS SHOULD NOT HAPPEN' STOP END