多重階乗プログラム [FORTRAN]
02/02/2019 29/09/2023
こんにちは、管理人のさくらえびです。
カテゴリ.計算用プログラムの初投稿です。
計算用プログラムというコンテンツを作りながらも、どんなものが実用的なのかわからず、
安直な感じで申し訳ないですが、初投稿は多重階乗プログラムにしてみることにしました。
チョイスの理由ですか?やだなぁ~!簡単だし、コードが短いからです。
ところで。。。
HTMLにスタイリッシュなソースコード表示はできたものの、
スタイリッシュな数式は載せれるのだろうかと考えたとき、一度は導入したい・・・Texを(カイジ風の倒置法)
こういう理由もあって、階乗です。だって記号がびっくりだから!!!
では真面目に、まずは定義
Definition(階乗):
非負整数であるnに対し、1からnまでの整数の積をn!とあらわす。
n=5なら、5! = 5×4×3×2×1 = 120
Definition(2重階乗):
非負整数であるnに対し、1からnまでの整数のうち、1つ飛ばしの積をn!!とあらわす。
n=5なら、5!! = 5×3×1 = 15
Definition(多重階乗):
非負整数であるnに対し、1からnまでの整数のうち、k飛ばしの積をn!kとあらわす。
n=5,k=3なら、5!k = 5×2 = 10
そろそろプログラムに入りましょう。
プログラムでは、それぞれの階乗対して、一個ずつ関数を作りません。
最初から多重階乗として作成し、引数によって戻り値を制御します。
ゼロの階乗とか1の階乗は、1となるそうなのでその処理だけはif文で組みます。
下記はソースコード
function nFac(order,n) implicit none double precision nFac integer*4 n,i,order if (n == 0 ) then nFac = 1.d0 endif if (n == 1) then nFac = 1.d0 endif if (n >= 2) then nFac = 1.d0 do i=n,2,-order nFac = nFac*dble(i) enddo endif end function nFac
使いかたはこんな感じ
program test implicit none double precision nFac integer*4 i do i = 1,5 print *,"n=",i,"n!!=",nFac(2,i) enddo end program test
ではでは!また更新していきます。