Foros del Web » Programando para Internet » Python »

Calcular el MCD.

Estas en el tema de Calcular el MCD. en el foro de Python en Foros del Web. Hola gente, soy muy nueva en esto de la programacion y tengo problemas para hallar el mcd de dos números ingresados por consola. Seguramente alguno ...
  #1 (permalink)  
Antiguo 19/08/2011, 09:38
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta Calcular el MCD.

Hola gente, soy muy nueva en esto de la programacion y tengo problemas para hallar el mcd de dos números ingresados por consola. Seguramente alguno de ustedes puede darme una mano.

Esto es lo que pude hacer:

Código Python:
Ver original
  1. a=int(raw_input('ingrese el primer numero:'))
  2. b=int(raw_input('ingrese el segundo numero:'))
  3.  
  4. if a==0:
  5.   print 'el mcd es', b
  6.  
  7. if b==0:
  8.   print 'el mcd es', a
  9.  
  10. while a!=b:
  11.   a%b
  12.   if a%b==0:
  13.     print
  14.    
  15.   elif a!=0 and b!=0:
  16.     b%a
  17.     print
Ojala puedan ayudarme.
Saludos
  #2 (permalink)  
Antiguo 19/08/2011, 09:49
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Calcular el MCD.

No se de donde sacaste ese algoritmo, pero ese no es el algoritmo para sacar el MCD.
El algoritmo que se usa para sacar el MCD (GCD en ingles) es el algoritmo de euclides.

Ahora una implementacion en python sería la siguiente:
Código Python:
Ver original
  1. def mcd(a, b):
  2.     while b != 0:
  3.         a, b = b, a % b
  4.     return a

También puedes tener su implementación recursiva
Código Python:
Ver original
  1. def mcd(a, b):
  2.     if b == 0:
  3.         return a
  4.     return mcd(b, a % b)

Si es el caso que sea una tarea (que ciertamente lo dudo) puede usar la siguiente función predefinida:
Código Python:
Ver original
  1. from fractions import gcd
  #3 (permalink)  
Antiguo 19/08/2011, 09:54
 
Fecha de Ingreso: agosto-2011
Mensajes: 2
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Calcular el MCD.

Estoy trabajando con un libro de programación y dice: "Dados dos números naturales ay b comprobar si b es cero. Si es así, a es el mcd. Si no, calcular c, el resto de dividir a entre b. Sustituir a por b y b por c y repetir el proceso"

Intente hacer eso, pero no supe como llevarlo a python.

No es una tarea, estoy tratando de aprender a programar en python.

MUCHAS GRACIAS POR TU AYUDA :)
  #4 (permalink)  
Antiguo 19/08/2011, 12:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Calcular el MCD.

josefinakey,
Los algoritmos de cálculo de MCD requieren que a sea mayor que b. Lo menciono porque has intentado en tu código original comprobar que "a" no sea cero, pero el algoritmo no funciona si a < b.

El enunciado que pusiste para el algoritmo de euclides es recursivo. Traducido lo más exactamente posible a Python, sería:
Código Python:
Ver original
  1. def mcd(a, b):
  2.     if b == 0:
  3.         return a
  4.     else:
  5.         c = a % b
  6.         return mcd(b,c) # "sustituir a por b y b por c y repetir el proceso"
Lo cual, si eliminamos pasos superfluos, es exactamente lo que te escribió razpeitia antes.

A propósito, me gusta esta forma del método recursivo (aunque prefiero el método iterativo):
Código Python:
Ver original
  1. def mcd(a, b):
  2.     return a if b == 0 else mcd(b, a%b)

Saludos.

Etiquetas: calculadora
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.