C语言中PGCD的递归计算

当两个整数中至少有一个不等于零时,两个整数的 GCD(最大公约数) 是除以两个数字的最大正整数除数。例如,45 和 30 的 GCD 为 15.

1- 使用 Modulo

  • 将 b 的值分配给 a,将 a 除以 b 的余数值分配给 b.
  • 重复直到余数为零<。>
pgcd

Example:
示例
C:

#include

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

如果 (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 是两个正整数,我们有以下算术属性:
递归减法
示例:
递归减法

带有递归的 PGCD 程序.

int PGCD(int a, int b)
{
if(a==b)
{
return a;
}
else
{
if(a>(b)
返回PGCD(a-b, b);
else
返回 PGCD(a, b-a);
}
}
References:
Wikipedia: Greatest common divisor
Wikipedia: Euclid's algorithm extended