[Python] - mdc

Iniciado por Meta, 20 Octubre 2010, 09:59 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta


Partiendo de este ejemplo.

http://www.subeimagenes.com/img/129-130-4950.gif

Código (python) [Seleccionar]
num = int(raw_input('Agrega un número: '))

creo_que_es_primo = True
divisor = 2
while divisor < num and creo_que_es_primo:
   if num % divisor == 0:
       creo_que_es_primo = False
   divisor += 1

if creo_que_es_primo:
   print 'El número', num, 'es primo'
else:
   print 'El número', num, 'no es primo'


Hablando del ejercicio 129, por lo que entiendo, parece que hay que hacer cálculos de dos números enteros y luego dividirlo. El primero está así como indica arriba. ¿Cómo hago el otro en el mismo programa?
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#1
Hice algo de esto pero no se si tiene que ver.

Código (python) [Seleccionar]
num = int(raw_input('Agrega un número: '))
num_2 = int(raw_input('Agrega otro número: '))

creo_que_es_primo = True
divisor = 2
while divisor < num and creo_que_es_primo:
   if num % divisor == 0:
       creo_que_es_primo = False
   divisor += 1

   if creo_que_es_primo:
       print 'El número', num, 'es primo'
   else:
       print 'El número', num, 'no es primo'

creo_que_es_primo_2 = True
divisor_2 = 1
while divisor_2 < num_2 and creo_que_es_primo_2:
   if num_2 % divisor_2 == 0:
       creo_que_es_primo_2 = False
   divisor_2 += 1

   if creo_que_es_primo_2:
       print 'El número', num_2, 'es primo'
   else:
       print 'El número', num_2, 'no es primo'

# Como dice que los divida, me imagino que se refiere a esto.
n = num / num_2
print n



Estamos tratando del ejercicio sólo por ahora el 129.

Aquí hay algo que no se si realmente viene al cuento.
http://es.wikipedia.org/wiki/M%C3%A1ximo_com%C3%BAn_divisor

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Como estoy en la universidad no tengo python. Así que javascript es la mejor opción,
Código (javascript) [Seleccionar]
 var Num1 = 20;
 var Num2 = 10;
 var Aux1 = Num1;
 var Aux2 = Num2;
 var Rest = 1;
 var mcd = 1;
 var mcm = 1;

 while (Aux2 != 0) {
   Rest = Aux1 % Aux2;
   Aux1 = Aux2;
   Aux2 = Rest;
 }

 mcd = Aux1;
 mcm = Num1 * Num2 / mcd;

 document.write("MCM: " + mcm);
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

Buenas campeón:

Ahora toca usar los for-in.
Código (python) [Seleccionar]
Num1 = int(raw_input('Agrega un número: '))
Num2 = int(raw_input('Agrega otro número: '))

#Num1 = 20
#Num2 = 10
Aux1 = Num1
Aux2 = Num2
Rest = 1
mcd = 1
mcm = 1

while Aux2 != 0
    Rest = Aux1 % Aux2
    Aux1 = Aux2
    Aux2 = Rest

mcd = Aux1
mcm = Num1 * Num2 / mcd


CitarFile "/home/user/NetBeansProjects/kami/src/kami.py", line 31
    while Aux2 != 0
                  ^
SyntaxError: invalid syntax

De todas maneras hay que usar el for-in si es posible.

Saludo.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Es que si mal no recuerdo, en el while es así,
Código (python,12) [Seleccionar]
Num1 = int(raw_input('Agrega un número: '))
Num2 = int(raw_input('Agrega otro número: '))

#Num1 = 20
#Num2 = 10
Aux1 = Num1
Aux2 = Num2
Rest = 1
mcd = 1
mcm = 1

while Aux2 != 0:
    Rest = Aux1 % Aux2
    Aux1 = Aux2
    Aux2 = Rest

mcd = Aux1
mcm = Num1 * Num2 / mcd
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

#5
En teoría es así y no se deja. Mejor usar un for in ya que es el que se usa en estos ejercicios. Bueno, si quieres hacerlo funcionar con While, lo haremos, pero a mi no me sale y me  da error. Por algo será. Seguiré investigando porqué da ese error.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

#6
Bueno, no se que es lo que no te rueda. A mi me funciona correctamente, así,
Código (python) [Seleccionar]
Num1 = 20
Num2 = 10
Aux1 = Num1
Aux2 = Num2
Rest = 1
mcd = 1
mcm = 1

while Aux2 != 0:
Rest = Aux1 % Aux2
Aux1 = Aux2
Aux2 = Rest

mcd = Aux1
mcm = Num1 * Num2 / mcd

print mcm


Resultado,
Código (PoC) [Seleccionar]
none@alex-laptop:~/Escritorio$ python PoC.py
20
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

Código (python) [Seleccionar]
from fractions import gcd
a = int(raw_input("Numero 1: "))
b = int(raw_input("Numero 2: "))
print gcd(a, b)


http://es.wikipedia.org/wiki/Algoritmo_de_Euclides#Implementaci.C3.B3n_en_pseudoc.C3.B3digo
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Shell Root

Si estáis aprendiendo, lo correcto sería hacedlo manualmente.  :P
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Meta

Si. En este caso es para los visitantes, no para mi. Guardo los ejercicios porque debo leer otra vez el PDF y así espero tener más soltura.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/