工夫せず素朴に求めます。4バイト整数ではオーバーフローしました。
ソース・プログラム
program PEuler014 implicit none integer :: i, k, kk(1e6) integer(8) :: m do i = 1, 1e6 k = 1 m = i do if (mod(m, 2) == 0) then m = m / 2 else m = 3 * m + 1 end if if (m == 1) exit k = k + 1 end do kk(i) = k end do print *, maxloc(kk), ':', maxval(kk) stop end program PEuler014
実行結果
837799 : 524
続行するには何かキーを押してください . . .