C言語でパスカルの三角形を教えて!
こういった悩みにお答えします.
本記事の信頼性
- リアルタイムシステムの研究歴12年.
- 東大教員の時に,英語でOS(Linuxカーネル)の授業.
- 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
- プログラミング歴15年以上,習得している言語: C/C++,Python,Solidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Verse(UEFN), Assembler (x64,aarch64).
- 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」をGitHubにオープンソースとして公開.
- 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
- 最近は自然言語処理AIとイーサリアムに関する有益な情報発信に従事.
- (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
- (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.
こういった私から学べます.
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!
目次
パスカルの三角形
パスカルの三角形は,二項定理における係数(二項係数)を三角形状に並べたものです.
二項定理とは,\((x + y)^n\)(n = 0,1,2,...)を展開する下式の内容です.
\begin{eqnarray*}
(x + y)^0 &=& 1 \\
(x + y)^1 &=& x + y \\
(x + y)^2 &=& x^2 + 2xy + y^2 \\
&...&
\end{eqnarray*}
上式の右辺の二項係数を三角形で表示するのがパスカルの三角形です.
つまり,n = 0,1,2のパスカルの三角形は以下のようになります.
1 2 3 |
1 1 1 1 2 1 |
パスカルの三角形のコード
パスカルの三角形のコードは以下になります.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* * Author: Hiroyuki Chishiro * License: 2-Clause BSD */ #include <stdio.h> #define N 10 int main(void) { int i, j; unsigned long array[N + 1][N + 1]; for (i = 0; i <= N; i++) { for (j = 0; j <= i; j++) { if (j == 0) { array[i][j] = 1; } else if (j < i) { array[i][j] = array[i - 1][j - 1] + array[i - 1][j]; } else { array[i][j] = array[i - 1][j - 1]; } printf("%lu ", array[i][j]); } printf("\n"); } return 0; } |
n = 0,1,2,...,10のパスカルの三角形の実行結果は以下になります.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ gcc pascal_triangle.c $ a.out 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 |
パスカルの三角形は11のn乗
パスカルの三角形は11のn乗になる性質があります.
具体的には,以下の数式の結果になります.
\begin{eqnarray*}
(10 + 1)^0 &=& 1 \\
(10 + 1)^1 &=& 11 \\
(10 + 1)^2 &=& 121 \\
&...&
\end{eqnarray*}
pascal_triangle.cで24行目のprintf関数の引数の空白を削除したコードは以下になります.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* * Author: Hiroyuki Chishiro * License: 2-Clause BSD */ #include <stdio.h> #define N 10 int main(void) { int i, j; unsigned long array[N + 1][N + 1]; for (i = 0; i <= N; i++) { for (j = 0; j <= i; j++) { if (j == 0) { array[i][j] = 1; } else if (j < i) { array[i][j] = array[i - 1][j - 1] + array[i - 1][j]; } else { array[i][j] = array[i - 1][j - 1]; } printf("%lu", array[i][j]); } printf("\n"); } return 0; } |
n = 0,1,2,…,10のパスカルの三角形の実行結果は以下になります.
\(11^n\)になりました.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ gcc pascal_triangle2.c $ a.out 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691 1104512021025221012045101 |
まとめ
C言語でパスカルの三角形を紹介しました.
パスカルの三角形で数学とプログラミングを楽しみましょう!
C言語を独学で習得することは難しいです.
私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.
私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!
独学が難しいあなたは,元東大教員がおすすめするC言語を学べるオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!