Saltar al contenido
EjemplosEnglishEspacio →

MCD y MCM

Calcula el máximo común divisor y el mínimo común múltiplo.

Nivel
Intermedio
Conceptos:
Entrada y salida
Funciones
Mientras
Matemáticas
Abrir en Codoritmo

Ejecuta, modifica y depura este ejemplo en el navegador.

Lo que aprenderás

La Funcion MCD aplica el algoritmo de Euclides con un Mientras y MOD. El MCM sale del MCD usando Trunc para quedarte con un entero.

Código

gcd-lcm.psc · 25 líneas
Funcion resultado <- MCD(a, b)    Definir resultado, resto Como Entero    // Algoritmo de Euclides    Mientras b <> 0 Hacer        resto <- a MOD b        a <- b        b <- resto    FinMientras    resultado <- aFinFuncionAlgoritmo MCDyMCM    Definir a, b, divisor Como Entero    Escribir "Primer número:"    Leer a    Escribir "Segundo número:"    Leer b    Si a <= 0 O b <= 0 Entonces        Escribir "Usa números enteros positivos."    SiNo        divisor <- MCD(a, b)        Escribir "MCD(", a, ", ", b, ") = ", divisor        Escribir "MCM(", a, ", ", b, ") = ", Trunc(a * b / divisor)    FinSiFinAlgoritmo

Diagrama de flujo

Cada bloque del diagrama corresponde a una instrucción del código.

Algoritmo MCDyMCM
Algoritmo MCDyMCMSíNoAlgoritmo MCDyMCMAlgoritmo MCDyMCMDefinir a, b, divisor Como EnteroDefinir a, b, divisor ComoEnteroEscribir "Primer número:"Escribir "Primer número:"Leer aLeer aEscribir "Segundo número:"Escribir "Segundo número:"Leer bLeer bSi a <= 0 O b <= 0 Entoncesa <= 0 O b <= 0Escribir "Usa números enteros positivos."Escribir "Usa números enterospositivos."divisor <- MCD(a, b)divisor <- MCD(a, b)Escribir "MCD(", a, ", ", b, ") = ", divisorEscribir "MCD(", a, ", ", b,") = ", divisorEscribir "MCM(", a, ", ", b, ") = ", Trunc(a * b / divisor)Escribir "MCM(", a, ", ", b,") = ", Trunc(a * b / divisor)FinAlgoritmoFinAlgoritmo
Funcion MCD
Funcion MCDSíNoFuncion resultado <- MCD(a, b)Funcion resultado <- MCD(a, b)Definir resultado, resto Como EnteroDefinir resultado, resto ComoEnteroMientras b <> 0 Hacerb <> 0resto <- a MOD bresto <- a MOD ba <- ba <- bb <- restob <- restoresultado <- aresultado <- aFinFuncion (devuelve resultado)FinFuncion (devuelve resultado)

Ejemplo de ejecución

Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.

Primer número:Respuesta del usuario: 12Segundo número:Respuesta del usuario: 18MCD(12, 18) = 6MCM(12, 18) = 36

Complejidad

Cuánto trabajo y memoria necesita según la cantidad de datos (n).

Complejidad
CasoCosto
MejorO(1)
PromedioO(log n)
PeorO(log n)
MemoriaO(1)

Desafío

Pide tres números y calcula el MCD de los tres.

Ver pista

El MCD de tres números es MCD(MCD(a, b), c).

Abrir en Codoritmo