「ユークリッドの互除法」の版間の差分
imported>Administrator |
|||
(他の1人の利用者による、間の1版が非表示) | |||
42行目: | 42行目: | ||
[[F Sharp|F#]]で書くとこんな感じである。 | [[F Sharp|F#]]で書くとこんな感じである。 | ||
F#は[[OCaml]]から派生した[[プログラミング言語]]なのでほとんど違いはない。 | F#は[[OCaml]]から派生した[[プログラミング言語]]なのでほとんど違いはない。 | ||
− | + | 違いは[[除算]]の[[演算子]]が「mod」ではなく「%」なくらいである。 | |
<source lang="fsharp"> | <source lang="fsharp"> | ||
let rec gcd a = function | let rec gcd a = function | ||
52行目: | 52行目: | ||
* [[最大公約数]] | * [[最大公約数]] | ||
* [[最小公倍数]] | * [[最小公倍数]] | ||
+ | |||
+ | [[category: アルゴリズム]] | ||
+ | [[category: 算数]] |
2018年10月31日 (水) 03:06時点における最新版
実装例編集
C言語編集
C言語によるシンプルな実装。
int gcd(int a, int b) {
return b == 0 ? a : gcd(b,a%b);
}
C言語による再帰を使わない実装。
int gcd(int a, int b) {
if (a <= 0 || b <= 0) {
return 0;
}
while (0 < b) {
int t = a % b;
a = b;
b = t;
}
return a;
}
Haskellによる実装例編集
Haskellで書くとこんな感じである。
gcd a b = if b<=0 then a else gcd b (mod a b)
OCamlによる実装例編集
OCamlで書くとこんな感じである。
let rec gcd a = function
| 0 -> a
| b -> gcd b (a mod b);;
F#による実装例編集
F#で書くとこんな感じである。 F#はOCamlから派生したプログラミング言語なのでほとんど違いはない。 違いは除算の演算子が「mod」ではなく「%」なくらいである。
let rec gcd a = function
| 0 -> a
| b -> gcd b (a % b);;