Определите наибольший общий делитель (GCD) из двух значений, используя алгоритм Евклида

Моя программа запрашивает у пользователя два числа, а затем я должен передать эти числа своей функции. Моя функция должна «Идентифицировать наибольший общий делитель (GCD) из двух значений с помощью алгоритма Евклида. Возвращать true, если это значение больше 1 и меньше, чем меньшее из двух чисел. Установите для параметра call-by-reference» значение GCD. В main () выведите GCD и укажите, вернула ли ваша функция значение true или false. » Как мне это сделать?

int gcd (int a, int b)
{
int c;

if ( b == 0 )
return a;

else
while ( b != 0 )
{
c = b;
b = a % b;
a = c;
}

return a;
}

-2

Решение

Чувак, это не могло быть проще … STFG

Ваш код приближается к примеру 2, но у вас есть ошибка в этой строке

   if ( b == 0 )
return a;

Проверка и возврат должны быть в обратном порядке

Я хотел бы попробовать эту реализацию вики в псевдокоде:

function gcd(a, b)
while b ≠ 0
t := b
b := a mod t
a := t
return a

но ты должен хотя бы попытаться что-то погуглить, чувак. знак равно

1

Другие решения

это самая сложная логика, которую вы используете, есть очень простая логика, которую вы можете получить из блогов, я нашел эту из

http://www.programmingtunes.com/finding-greatest-common-divisor-of-2-numbers-c/:

//greatest common divisor of 2 numbers in C++
#include <iostream>
using namespace std;
void main()
{
int x = 24;
int y = 18;
int temp = 1 ;
for(int i = 2; i<=y; i++)
{
if(x%i == 0 && y%i == 0)
{
temp = i;
}

}

cout<<temp<<endl;

}
0