!    ベルヌーイ数を求めるプログラム(改良版)
!    
!    2013/08/01 村橋究理基 新規作成

program bnum2
implicit none

!integer :: k,l,m       ! ループ変数
integer :: i           ! ベルヌーイ数添字
integer :: j           ! ループ変数(部分和計算用)
integer :: kp, lp, mp  ! 階乗計算用変数
real(8) :: Cij         ! Combination計算用変数
real(8) :: sum         ! 部分和を保存する変数
real(8) :: be(0:1000)  !ベルヌーイ数として要素が100ある配列

be(0) = 1.0d0
i = 0

write(*,*) 'ベルヌーイ数'
write(*,*) i, '個目', be(0)

do i = 1, 100
   Cij = 1.0d0

   sum = Cij * be(0)

   do j = 1, i-1
      ! (i+1)C(j)の計算
      Cij = Cij * dble(i+2-j)/dble(j)

      sum = sum + Cij*be(j)
!      write(*,*) Cij, be(j)
   enddo
!   write(*,*) sum

   be(i) = -1.0d0/dble(i+1)*sum

!   write(*,*) i, '個目', be(i)
   write(*,*) i, '&', be(i), '\\ \hline'
enddo

endprogram

