最大公約数を求める (再帰)

明解C言語 入門編 > 8. いろいろなプログラムを作ってみよう >

最大公約数を求める (再帰)

C


#include <stdio.h>

int gcdf(int vx, int vy)
{
return (vy == 0 ? vx : gcdf(vy, vx % vy));
}

int gcd(int va, int vb)
{
return (va > vb ? gcdf(va, vb) : gcdf(vb, va));
}

int main(int argc, char* argv[])
{
int n1 = 8;
int n2 = 22;
printf("%dと%dの最大公約数は%dです。\n", n1, n2, gcd(n1, n2));

return 0;
}

実行結果


R:\>lesson064\Project1.exe
22と8の最大公約数は2です。

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function gcdf(vx:Integer; vy:Integer):Integer;
begin
if vy = 0 then
result := vx
else
result := gcdf(vy, vx mod vy);
end;

function gcd(va:Integer; vb:Integer):Integer;
begin
if va > vb then
result := gcdf(va, vb)
else
result := gcdf(vb, va);
end;

procedure main();
var
n1, n2: Integer;
begin
n1 := 8;
n2 := 22;
writeln(format('%dと%dの最大公約数は%dです。', [n1, n2, gcd(n1, n2)]));
end;

begin
main;
end.

実行結果


S:\>lesson064\Project1.exe
22と8の最大公約数は2です。