Last modified: Thu Apr 10 09:24:57 JST 2008
[top | back | next ]
ユークリドの互除法を用いて2つの自然数の
最大公約数,および,最小公倍数を求める.
この例題のような任意の整数を掛け算の積に分解する操作は,
安全な通信技術(暗号化と復号化)で重要な役割を果たしている.
上記のソースプログラムにドキュメントを書き加えたものも含めて, 作成した全てのファイルを以下に示す.
全体は,1つのヘッダファイル(sub.h),
2つのソースファイル(euclid.c, sub.c),
および,Makefileで構成される.
また,makeコマンドをにより最終的に作成する実行ファイルを euclid とする.
この関係を下図に示す
コメントについては, ここ を参照のこと
ソースファイル euclid.c および sub.c 内にコメントとして 書き入れたドキュメントを以下で説明する.
/** ... */
@file euclid.c
@brief ユーグリッドの互除法を用いて,...
@author 工芸太郎
@date 2008/04/01 Ver. 1
/** @brief 2数の最大公約数,および,最小公倍数を求める ユーグリッドの互除法を用いて最大公約数,最小公倍数を求める ... */ main(int argc, char **argv) {
- 使用方法: euclid n m - 最大公約数の性質 - 2数を n, m (n>=m)とし,その最大公約数を gcm(n,m) と表す.<br> このとき,gcm(n,m) = gcm(m,n%m) が成立する.<br> ただし,n%m は nをmで割った余りを意味する. - ユークリッドの互除法 - n を m で割った余り r1 を求める (m > r1 >= 0) - m を r1 で割った余り r2 を求める (r1 > r2 >= 0)