PROGRAM Asal_Sayilar
!----------------------------------------------------
! 17prg06.f95
! Eratosthenes Algoritması ile N = 100,000 den
! küçük asal sayılar.
! Kaynak: 
! http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
!----------------------------------------------------
IMPLICIT NONE
INTEGER, PARAMETER :: N = 1000000
INTEGER :: I, Sayi, SqrtSayi, Sayac = 0
LOGICAL :: Asal

 DO Sayi = 1, N

    IF(Sayi<2) CYCLE                      ! Sayi = 1
    IF(Sayi>2 .AND. MOD(Sayi,2)==0) CYCLE ! Sayi çift

    Asal = .TRUE.

    SqrtSayi = SQRT( REAL(Sayi) )

    DO I =3, SqrtSayi, 2
      IF( MOD(Sayi,I) == 0 ) THEN
        Asal = .FALSE.
        EXIT
      END IF
    END DO

    IF(Asal) THEN
        Sayac = Sayac + 1
        PRINT *,Sayi
    END IF

 END DO

 PRINT *,"Toplam", Sayac, " adet."

END PROGRAM