多重階乗プログラム [C言語]
19/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文で組みます。
まずは、C言語(C++兼ねる)
double Factorial_n(int order, int num){ double Fact; Fact = 1; if(num <= 1){ Fact = 1; }else{ for(int i = num ; i>=1 ; i=i-order){ Fact = Fact*i; }
} return Fact; }
使いかたはこんな感じ
#include <stdio.h> #include <math.h> double Factorial_n(int order , int num); int main(void){ for(int i = 1 ;i<=6 ; i++){ printf("n!=%lf\n",Factorial_n(3,i)); } return 0; }
C++だとこんな使いかた。
#include <iostream> #include <cmath> using namespace std; double Factorial_n(int order , int num); int main(void){ for(int i = 1 ;i<=6 ; i++){ cout << "n!!=" << Factorial_n(2,i) << endl; } return 0; }
ではでは!また更新していきます。