Intermedio · algoritmo de Euclides

MCD (Máximo común divisor)

mcd(12, 18) = 6. Euclides: mcd(a, b) = mcd(b, a mod b) hasta que b sea cero. El algoritmo más antiguo aún en uso diario.

Problema

Entrada: una línea con dos enteros a b (0 ≤ a, b ≤ 10⁹, no ambos cero).

Salida: su máximo común divisor.

Ejemplo:

EntradaSalida
12 186
17 51

Tu solución

Program.cs — tu solución
Entrada personalizada para "Probar mi entrada"

La corrección se ejecuta por completo en tu navegador contra pruebas ocultas. Tu código se guarda localmente mientras escribes. Ctrl+Enter corrige.

¿Atascado? Pistas

Pista 1 — el algoritmo completo

while (b != 0) { int t = b; b = a % b; a = t; } — cuando termina, a es la respuesta. Tres líneas, sin recursión.

Pista 2 — por qué funciona

Cualquier número que divida tanto a a como a b también divide a a mod b — así que (a, b) y (b, a mod b) comparten TODOS los divisores comunes. El segundo número se encoge rápido: al menos se reduce a la mitad cada dos rondas.

Solución (¡inténtalo primero!)
string[] partes = Console.ReadLine().Split(' ');
int a = int.Parse(partes[0]);
int b = int.Parse(partes[1]);
while (b != 0) { int t = b; b = a % b; a = t; }
Console.WriteLine(a);

Euclides es la puerta a la teoría de números — el MCM queda a una línea: a / mcd * b. Siguiente: Comprobar primo.