Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/03/2015, 08:08
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Como creo un programa en Python que me muestre el primo mas cercano a un

Si estás aprendiendo, dejame sugerirte lo que para mí es una metodología de trabajo importante y que funciona:

1. Entendé el problema. Con tus propias palabras, describí lo que necesitás hacer, sin entrar en detalles

"Dado un número n, encontrar el primer número primo mayor o igual que n"

2. En pasos sucesivos, agregá detalle a la descripción. Estos pasos deberían sugerirte una forma de resolver el problema, e incluso las funciones que vas a necesitar.

"Leer un número n desde el teclado, y luego encontrar el primer x tal que x es mayor o igual que n y primo"

"Leer un número n desde el teclado. Probar si es primo. Si no lo es, sumarle sucesivamente 1 hasta encontrar un número primo"

Notá cómo esta última descripción del problema sugiere una función para verificar que un número es primo (ya que vas a necesitar verificarlo varias veces) y a la vez sugiere el uso de un bucle.

3. Escribí pseudo-código que "implemente" la descripción más detallada a la que hayas llegado en el paso 2

Como este problema es sencillo, el pseudocódigo no es tan necesario. Pero este paso suele ayudar a encontrar problemas lógicos, y de hecho es mucho mejor si se encuentran antes de escribir el programa real. Comprensiblemente los pasos 2 y 3 están muy relacionados, ya que ambos ayudan a entender el problema que se intenta resolver.

4. Convertí el pseudocódigo del paso anterior a código real
Código Python:
Ver original
  1. n = int(input("Ingrese número: "))
  2. i = 0
  3. while not es_primo(n + i):
  4.     i += 1
  5.  
  6. print n + i

Ahora repetís todo el proceso con la función es_primo. Recordá que el método más sencillo (aunque más lento) para probar si un número n es primo es verificar que no es divisible entre ningún primo menor que la raíz cuadrada de n. También, por eficiencia, podrías probar que n no sea par, y si lo es, sumar de a 2 en vez de a 1.


Saludos.