問題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