C 言語による数の階乗の求め方

CCBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、数の階乗を求めるための C プログラムを書く方法を学びます。ループを使って階乗を計算するための簡単なアルゴリズムを使用します。

注: コーディングを練習し、gcc を使ってコンパイルと実行方法を学ぶには、自分で ~/project/main.c ファイルを作成する必要があります。

cd ~/project
## main.c を作成する
touch main.c
## main.c をコンパイルする
gcc main.c -o main
## main を実行する
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("C")) -.-> c/FunctionsGroup(["Functions"]) c(("C")) -.-> c/UserInteractionGroup(["User Interaction"]) c(("C")) -.-> c/BasicsGroup(["Basics"]) c(("C")) -.-> c/ControlFlowGroup(["Control Flow"]) c/BasicsGroup -.-> c/variables("Variables") c/ControlFlowGroup -.-> c/for_loop("For Loop") c/FunctionsGroup -.-> c/function_declaration("Function Declaration") c/FunctionsGroup -.-> c/math_functions("Math Functions") c/FunctionsGroup -.-> c/recursion("Recursion") c/UserInteractionGroup -.-> c/user_input("User Input") c/UserInteractionGroup -.-> c/output("Output") subgraph Lab Skills c/variables -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/for_loop -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/function_declaration -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/math_functions -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/recursion -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/user_input -.-> lab-123240{{"C 言語による数の階乗の求め方"}} c/output -.-> lab-123240{{"C 言語による数の階乗の求め方"}} end

階乗の理解

ある数(たとえば n)の階乗(n! で表されます)は、n より前のすべての数とその数自体の積です。つまり、

!n = n *!(n - 1)

たとえば、

!6 = 6 * 5 * 4 * 3 * 2 * 1 = 720
!12 = 12 * 11 * 10 * 9 * 8 * 7 *!6 = 479,001,600

重要なポイント:

  • 0 の階乗は 1 です
  • 負の数の階乗は存在しません。

アルゴリズムの作成

階乗プログラムで実行する手順は以下の通りです。

  1. 変数 nfact=1 を宣言します。n は階乗を計算する対象の数であり、fact は結果を格納する変数です。
  2. ユーザーから n に入力を読み取ります。
  3. ループイテレータ i=1 を初期化し、i<=n までループを実行します。
  4. ループの各反復で以下のことを行います。
    • fact=fact*i
    • i++
  5. fact を出力します。

C プログラムの作成

このプログラムでは、for ループを使って数の階乗を求めます。

#include<stdio.h>
int main()
{
    int n,i;
    long int fact=1;
    printf("Enter the number: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        fact=fact*i;    // 階乗を計算
    }
    printf("Factorial of %d is %ld",n,fact);
    return 0;
}

プログラムのテスト

プログラムを実行して出力を確認することで、テストしましょう。

Enter the number: 5
Factorial of 5 is 120

最終プログラム

ここに、for ループを使って数の階乗を求める最終プログラムがあります。

#include<stdio.h>
int main()
{
    int n,i;
    long int fact=1;
    printf("Enter the number: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        fact=fact*i;    // 階乗を計算
    }
    printf("Factorial of %d is %ld",n,fact);
    return 0;
}

まとめ

この実験では、for ループを使って数の階乗を求める C プログラムを書く方法を学びました。単純なアルゴリズムを使い、手順を追って目的を達成しました。このプログラムはユーザーから入力を受け取り、ループを使って階乗を計算し、結果を画面に表示します。変数の初期化や int 型と long int 型のデータ型の制限など、重要なポイントも学びました。