多重階乗プログラム [C言語]

こんにちは、管理人のさくらえびです。
カテゴリ.計算用プログラムの初投稿です。
計算用プログラムというコンテンツを作りながらも、どんなものが実用的なのかわからず、
安直な感じで申し訳ないですが、初投稿は多重階乗プログラムにしてみることにしました。
チョイスの理由ですか?やだなぁ~!簡単だし、コードが短いからですよ。
ところで。。。

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;
}

ではでは!また更新していきます。

  • さくらえび
  • さくらえびと申します
    企業勤め系研究者です。理論物理が専門分野。
    エンジニア・営業・コンサルを経験し、今はデータサイエンティストとしてお仕事をさせていただいております。