ソース・プログラム
program PEuler5 implicit none integer, parameter :: n = 20 integer, allocatable :: itab(:), ipow(:) integer :: k itab = ieratos(n) ipow = log(real(n)) / log(real(itab)) ! max prime power print *, product(itab**ipow) ! lcm stop contains function ieratos(n) ! thieve of Eratostenes integer, intent(in) :: n integer, allocatable :: ieratos(:) logical :: tab(n) integer :: i tab = .true. tab(1) = .false. do i = 2, int( sqrt(real(n)) ) if ( tab(i) ) tab(i * i:n:i) = .false. end do ieratos = pack( [ (i, i = 1, n) ], mask = tab ) return end function ieratos end program PEuler5
実行結果
232792560
続行するには何かキーを押してください . . .