Greatest common divisor: Difference between revisions
Content added Content deleted
(Nimrod -> Nim) |
|||
Line 1,882: | Line 1,882: | ||
=3</lang> |
=3</lang> |
||
=={{header| |
=={{header|Nim}}== |
||
Ported from Pascal example |
Ported from Pascal example |
||
===Recursive Euclid algorithm=== |
===Recursive Euclid algorithm=== |
||
<lang |
<lang nim>proc gcd_recursive(u, v: int64): int64 = |
||
if u %% v != 0: |
if u %% v != 0: |
||
result = gcd_recursive(v, u %% v) |
result = gcd_recursive(v, u %% v) |
||
Line 1,891: | Line 1,891: | ||
result = v</lang> |
result = v</lang> |
||
===Iterative Euclid algorithm=== |
===Iterative Euclid algorithm=== |
||
<lang |
<lang nim>proc gcd_iterative(u1, v1: int64): int64 = |
||
var t: int64 = 0 |
var t: int64 = 0 |
||
var u = u1 |
var u = u1 |
||
Line 1,901: | Line 1,901: | ||
result = abs(u)</lang> |
result = abs(u)</lang> |
||
===Iterative binary algorithm=== |
===Iterative binary algorithm=== |
||
<lang |
<lang nim>proc gcd_binary(u1, v1: int64): int64 = |
||
var t, k: int64 |
var t, k: int64 |
||
var u = u1 |
var u = u1 |