Попытка преобразовать код C в интерактивный двоичный евклидов алгоритм

Я пытался преобразовать некоторый код из C в C ++. Не могли бы вы, ребята, сообщить мне, где я ошибся, и дать мне несколько советов? Спасибо

По какой-то причине каждый раз, когда кто-то задает банальный вопрос, подобный этому, ему говорят «делай свое домашнее задание» и т. Д., Поэтому я просто укажу, что это не домашнее задание, как оно того стоит. еще раз спасибо

#include <iostream>

using namespace std;

int main()
{
int gcd_bin(int u, int v)
{
int t, k;

u = u < 0 ? -u : u; /* abs(u) */
v = v < 0 ? -v : v;
if (u < v)
{
t = u;
u = v;
v = t;
}
if (v == 0)
return u;

k = 1;
while (u & 1 == 0 && v & 1 == 0)
{ /* u, v - even */
u >>= 1; v >>= 1;
k <<= 1;
}

t = (u & 1) ? -v : u;
while (t)
{
while (t & 1 == 0)
t >>= 1;

if (t > 0)
u = t;
else
v = -t;

t = u - v;
}

return u * k;
}
}

1

Решение

У меня пока нет ответа, чтобы принять его, но проблема была решена людьми, указавшими на то, насколько глупым я был в комментариях, еще раз спасибо.

РЕДАКТИРОВАТЬ: Я опубликовал это, чтобы я мог принять его как ответ и закрыть вопрос, это не позволяет мне принять его еще на два дня.

1

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

Других решений пока нет …

По вопросам рекламы [email protected]