問題2の答え
1からnまでの自然数を順番に掛け合わせていく、典型的な繰り返し処理です。integer :: i, n, nFact print *, "n = ?" read *, n nFact = 1 do i=1,n nFact = nFact*i end do print *, n, "! is ", nFact最初に『nFact=1』としておくところがポイントです。0には何をかけても0にしかなりません。
なお実際には、整数型の変数『nFact』の代わりに実数型の変数を使った方が実用的になります。
ちなみに、「階乗」は英語で「factorial」です。
integer :: i, n real(kind=double) :: fact print *, "n = ?" read *, n fact = 1.d0 do i=1,n fact = fact*i end do print *, n, "! is ", fact