C言語におけるPGCDの再帰的計算

2つの整数のうち少なくとも一方がゼロでない場合の2つの整数のGCD(最大公約数)は、2つの数値を除算する最大の正の整数除数です。たとえば、45 と 30 の GCD は 15.

1- Modulo

  • a に b の値を代入し、b に b に対する a の除算の剰余の値を代入します。
  • 余りがゼロになるまで繰り返します<。>
pgcd modulo Euclid の拡張 C++ アルゴリズム

例:
PGCD モジュロ拡張ユークリッドアルゴリズムの例
C:

#include

int main()
{
int a,b,r,x,y;
do
scanf("%d",&a);
while (a<=0);
do
scanf("%d",&b);
while (b<=0);

if (a>b)
{
x=b;
r=a%b;
}
else
{
x=a;
r=b%a;
}

while(r!=0)
{
y=x;
x=r;
r=y%x;
}
printf("%d",x);
0を返します。
}

2- 再帰減算法でGCDを見つけます

aとbが2つの正の整数の場合、次の算術プロパティがあります:
recursive subtractive PGCD
例:
再帰的減算PGCDの例外

PGCD プログラムと再帰。

int PGCD(int a, int b)
{
if(a==b)
{
return a;
}
else
{
if(a>(b)
return PGCD(a-b, b);
else
return PGCD(a, b-a);
}
}
References:
Wikipedia: 最大公約数
Wikipedia: Euclid's algorithm extended