program criba !============================================================! ! Inicializo el array lista de deimension N con los ! ! naturales de 1 a N. Iniciakmente ningun elemento de lista ! ! esta marcado (con 0). Empezando por 2 marco todos los ! ! multiplos que les siguen menores a N con el loop interno ! ! El condicional permite marcar los multiplos si el nro no ! ! esta marcado. ! !============================================================! integer, parameter :: N=20 ! Nro maximo integer, dimension(N) :: lista ! array con los elementos de 2 a N integer :: numero,multiplo lista(1:N)=(/(i,i=1,N)/) do i = 2,N/2 numero = lista(i) if ( numero /=0 ) then do multiplo = 2*numero,N,i lista(multiplo) = 0 end do end if end do print *, lista end program criba