多重階乗プログラム [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;
}
ではでは!また更新していきます。