! 例題 6-2 エラトステネスのふるい法 [部分配列と配列代入文 ] PROGRAM ex6_2 IMPLICIT NONE LOGICAL :: index( 2 : 10000 ) = .TRUE. INTEGER :: prime( 1 : 10000 ), max = 0, n, k DO WHILE ( ( max <= 1 ) .OR. ( max > 10000 ) ) PRINT *, 'Upper limit ( <= 10000 ) ?' READ *, max END DO DO n = 2, INT( SQRT( REAL( max ) ) ) IF ( .NOT. index( n ) ) CYCLE index( n ** 2 : max : n ) = .FALSE. ! 配列代入式 END DO k = 0 DO n = 2, max IF ( index( n ) ) THEN k = k + 1 prime( k ) = n END IF END DO PRINT '( I5, A )', k, '個見つかりました。' PRINT '( 10I5 )', ( prime( n ), n = 1, k ) END PROGRAM ex6_2