! 例題 6-5 ナピエ数の計算(任意の長さ) [動的割付け ] PROGRAM ex6_5 IMPLICIT NONE INTEGER :: keta, max, k, j, r, num INTEGER, ALLOCATABLE :: digit( : ), unity( : ) PRINT *, 'How many decimals do you want?' READ *, keta max = keta * LOG( 10.0E0 ) ! 上限値 M ALLOCATE ( digit( 0 : keta ), unity( 0 : keta ) ) unity = (/ 1, ( 0, k = 1, keta ) /) ! 1.00000000... を表す digit = unity ! 初期化 DO k = max, 1, -1 r = 0 ! 余りを表す変数 DO j = 0, keta ! 小数点以下第 j 位 num = 10 * r + digit( j ) ! 分子 digit( j ) = num / k r = num - k * digit( j ) ! 余り END DO digit= unity + digit END DO PRINT '( /" e = ", I1, ".", 10( 1X, 5I1 )/& &( 7X, 10( 1X, 5I1 ) ) )', digit END PROGRAM ex6_5