Рекурсивное вычисление PGCD на языке Си

GCD (наибольший общий делитель) двух целых чисел, когда хотя бы одно из них не равно нулю, является наибольшим положительным целым делителем, делящим два числа. Например, НОД 45 и 30 равен 15.

1- Найдите НОД по модулю

  • Присвойте a значение b и b значение остатка от деления a на b.
  • Повторяйте до тех пор, пока остаток не станет равным нулю.
pgcd по модулю расширенного алгоритма Евклида на C++

Example:
Пример PGCD Modulo Extended Euclid Algorithm
Соответствующая программа на C:

#include< stdio.h> 

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

если (a> б)
{
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- Найти НОД рекурсивным методом вычитания

Если a и b — два натуральных числа, то мы имеем следующие арифметические свойства:
рекурсивный субтрактивный PGCD
Пример:
Исключение рекурсивного субтрактивного PGCD

PGCD программа с рекурсией.

int PGCD(int a, int b)
{
if(a==b)
{
return a;
}
else
{
if(a> (b)
возврат PGCD(a-b, b);
else
return PGCD(a, b-a);
}
}
References:
Википедия: Наибольший общий делитель
Википедия: Расширенный алгоритм Евклида

Commentaires (12)

Connectez-vous pour commenter

Rejoignez la discussion et partagez vos connaissances avec la communauté

JD
Jean Dupont Il y a 2 heures

Excellent tutoriel !

👍 12 Répondre Signaler
CodeurJava ✓ Auteur • Il y a 1 heure

N'hésitez pas si vous avez des questions.