Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 20 Octubre 2010, 09:59 am



Título: [Python] - mdc
Publicado por: Meta en 20 Octubre 2010, 09:59 am

Partiendo de este ejemplo.

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

Código
  1. num = int(raw_input('Agrega un número: '))
  2.  
  3. creo_que_es_primo = True
  4. divisor = 2
  5. while divisor < num and creo_que_es_primo:
  6.    if num % divisor == 0:
  7.        creo_que_es_primo = False
  8.    divisor += 1
  9.  
  10. if creo_que_es_primo:
  11.    print 'El número', num, 'es primo'
  12. else:
  13.    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?


Título: Re: [Python] - mdc
Publicado por: Meta en 20 Octubre 2010, 10:35 am
Hice algo de esto pero no se si tiene que ver.

Código
  1. num = int(raw_input('Agrega un número: '))
  2. num_2 = int(raw_input('Agrega otro número: '))
  3.  
  4. creo_que_es_primo = True
  5. divisor = 2
  6. while divisor < num and creo_que_es_primo:
  7.    if num % divisor == 0:
  8.        creo_que_es_primo = False
  9.    divisor += 1
  10.  
  11.    if creo_que_es_primo:
  12.        print 'El número', num, 'es primo'
  13.    else:
  14.        print 'El número', num, 'no es primo'
  15.  
  16. creo_que_es_primo_2 = True
  17. divisor_2 = 1
  18. while divisor_2 < num_2 and creo_que_es_primo_2:
  19.    if num_2 % divisor_2 == 0:
  20.        creo_que_es_primo_2 = False
  21.    divisor_2 += 1
  22.  
  23.    if creo_que_es_primo_2:
  24.        print 'El número', num_2, 'es primo'
  25.    else:
  26.        print 'El número', num_2, 'no es primo'
  27.  
  28. # Como dice que los divida, me imagino que se refiere a esto.
  29. n = num / num_2
  30. 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.


Título: Re: [Python] - mdc
Publicado por: Shell Root en 20 Octubre 2010, 16:36 pm
Como estoy en la universidad no tengo python. Así que javascript es la mejor opción,
Código
  1.  var Num1 = 20;
  2.  var Num2 = 10;
  3.  var Aux1 = Num1;
  4.  var Aux2 = Num2;
  5.  var Rest = 1;
  6.  var mcd = 1;
  7.  var mcm = 1;
  8.  
  9.  while (Aux2 != 0) {
  10.    Rest = Aux1 % Aux2;
  11.    Aux1 = Aux2;
  12.    Aux2 = Rest;
  13.  }
  14.  
  15.  mcd = Aux1;
  16.  mcm = Num1 * Num2 / mcd;
  17.  
  18.  document.write("MCM: " + mcm);


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 03:52 am
Buenas campeón:

Ahora toca usar los for-in.
Código
  1. Num1 = int(raw_input('Agrega un número: '))
  2. Num2 = int(raw_input('Agrega otro número: '))
  3.  
  4. #Num1 = 20
  5. #Num2 = 10
  6. Aux1 = Num1
  7. Aux2 = Num2
  8. Rest = 1
  9. mcd = 1
  10. mcm = 1
  11.  
  12. while Aux2 != 0
  13.    Rest = Aux1 % Aux2
  14.    Aux1 = Aux2
  15.    Aux2 = Rest
  16.  
  17. mcd = Aux1
  18. mcm = Num1 * Num2 / mcd

Citar
File "/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.


Título: Re: [Python] - mdc
Publicado por: Shell Root en 21 Octubre 2010, 04:19 am
Es que si mal no recuerdo, en el while es así,
Código
  1. Num1 = int(raw_input('Agrega un número: '))
  2. Num2 = int(raw_input('Agrega otro número: '))
  3.  
  4. #Num1 = 20
  5. #Num2 = 10
  6. Aux1 = Num1
  7. Aux2 = Num2
  8. Rest = 1
  9. mcd = 1
  10. mcm = 1
  11.  
  12. while Aux2 != 0:
  13.    Rest = Aux1 % Aux2
  14.    Aux1 = Aux2
  15.    Aux2 = Rest
  16.  
  17. mcd = Aux1
  18. mcm = Num1 * Num2 / mcd


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 05:46 am
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.


Título: Re: [Python] - mdc
Publicado por: Shell Root en 21 Octubre 2010, 05:56 am
Bueno, no se que es lo que no te rueda. A mi me funciona correctamente, así,
Código
  1. Num1 = 20
  2. Num2 = 10
  3. Aux1 = Num1
  4. Aux2 = Num2
  5. Rest = 1
  6. mcd = 1
  7. mcm = 1
  8.  
  9. while Aux2 != 0:
  10. Rest = Aux1 % Aux2
  11. Aux1 = Aux2
  12. Aux2 = Rest
  13.  
  14. mcd = Aux1
  15. mcm = Num1 * Num2 / mcd
  16.  
  17. print mcm

Resultado,
Código
  1. none@alex-laptop:~/Escritorio$ python PoC.py
  2. 20


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 06:53 am
Código
  1. from fractions import gcd
  2. a = int(raw_input("Numero 1: "))
  3. b = int(raw_input("Numero 2: "))
  4. print gcd(a, b)
  5.  

http://es.wikipedia.org/wiki/Algoritmo_de_Euclides#Implementaci.C3.B3n_en_pseudoc.C3.B3digo


Título: Re: [Python] - mdc
Publicado por: Shell Root en 21 Octubre 2010, 06:59 am
Si estáis aprendiendo, lo correcto sería hacedlo manualmente.  :P


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 07:42 am
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.


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 08:58 am
Ahora toca el ejercicio 130)

Siguiendo la lógica que esta vez es  como pide aquí he hecho esto.

Ver ejercicio 130). (http://www.subeimagenes.com/img/129-130-4950.gif)

Código
  1. Num1 = int(raw_input('Agrega un número: '))
  2. Num2 = int(raw_input('Agrega otro número: '))
  3. Num3 = int(raw_input('Agrega el tercer número: '))
  4.  
  5. #Num1 = 20
  6. #Num2 = 10
  7. Aux1 = Num1
  8. Aux2 = Num2
  9. Aux3 = Num3
  10. Rest = 1
  11. mcd = 1
  12. mcm = 1
  13.  
  14. while Aux3 != 0:
  15. Rest_1 = Aux1 % Aux2
  16. Rest_2 = Aux2 % Aux3
  17. Aux2 = Aux3
  18. Aux1 = Aux2
  19. Aux3 = Rest
  20.  
  21. mcd = Aux1
  22. mcm = Num1 * Num2 * Num3 / mcd
  23.  
  24. print mcm

No hace nada.


Título: Re: [Python] - mdc
Publicado por: Shell Root en 21 Octubre 2010, 14:22 pm
Cof, cof... Estais usando logica o solo interpretación del ejercicio anterior?.

Ando de nuevo en la Universidad, en la noche veré que puedo hacer directamente en PYTHON.


Título: Re: [Python] - mdc
Publicado por: Meta en 21 Octubre 2010, 14:44 pm
Las dos cosas.


Título: Re: [Python] - mdc
Publicado por: Meta en 22 Octubre 2010, 06:41 am
Cuando pueda me avisas aunque lo hagas con Java. Por ahora estoy adelantando los ejercicios nuevo.


Título: Re: [Python] - mdc
Publicado por: Meta en 25 Octubre 2010, 18:14 pm
¿al final hay solución?


Título: Re: [Python] - mdc
Publicado por: Shell Root en 26 Octubre 2010, 00:20 am
Emmm que tienes?