n = int(raw_input('Ingrese n: '))
es_primo = True
d = 2
while d < n:
    if n % d == 0:
        es_primo = False
    d = d + 1
if es_primo:
    print n, 'es primo'
else:
    print n, 'es compuesto'

"""
Explanation: <header class="w3-container w3-teal">
<img src="images/utfsm.png" alt="" align="left"/>
<img src="images/inf.png" alt="" align="right"/>
</header>
<br/><br/><br/><br/><br/>
IWI131
Programación de Computadores
Sebastián Flores


http://progra.usm.cl/ 


https://www.github.com/sebastiandres/iwi131


Resumen de la clase pasada

Reglas de evaluación
Curso piloto
Python es fácil y práctico

¿Ya instalaron python en sus computadores?
¿Qué contenido aprenderemos?

1- Modelamiento de un problema
2- Algoritmos
3- Ejemplo de problemas

¿Porqué aprenderemos ese contenido?

Modelamiento de un problema -> herramienta transversal en ingeniería.
Algoritmo -> herramienta transversal en informática.
Ejemplo de problemas -> motivación para el ramo.

Sitio web del ramo

Información oficial del ramo:
http://progra.usm.cl (materia, ejercicios, material, entrega tareas, etc.)


Otros medios:
http://twitter.com/progra_usm y http://facebook.com/ (anuncios, consultas, etc.)
Adicional a este paralelo:
https://github.com/sebastiandres/iwi131 (material adicional)



1- Modelamiento
¿Cómo se modela un problema? (hint: 3 pasos)

 Entrada de datos
Procesamiento de datos
Salida de datos

2- Algoritmo
¿Que es un algoritmo?
Secuencia de pasos para resolver un problema.
¿Ejemplos?

Recetas de cocina
Cambiar un neumático
Publicar una foto en facebook
etc.

2- Algoritmo
¿Que es un programa (computacional)?
Secuencia de instrucciones descritas en un lenguaje que puede ser entendido por el computador.
Es decir
Un algoritmo expresado en un lenguaje computacional.
3- Ejemplos
Ejemplo de problema


¿Dada una funcion lineal $y = ax + b $, ¿cómo encontramos los ceros de la función?


¿Dada una funcion cualquiera $y=f(x)$, ¿cómo encontramos los ceros de la función?


3- Ejemplos
Ejemplo de problema

Orden: 

Dado un conjunto de números, ¿cómo podemos obtener los números ordenados de mayor a menor?


Mínimo y Máximos: 


Dado un conjunto de números, ¿Cómo podemos obtener el menor o el mayor entre ellos?


Vendedor Viajero: 

Dado un conjunto de ciudades, ¿cómo podemos encontrar el camino más corto que une todas las ciudades sin repetir?

3- Ejemplos
Ejemplo de problema

¿Dado un mensaje de email, cómo podemos clasificarlo en spam o no spam?

3- Ejemplos
Ejemplo de problema

¿Dadas las mediciones de sismógrafos, cómo podemos predecir en cuáles ciudades hay que emitir una alerta de tsunami?

3- Ejemplos
Ejemplo de problema
Dadas ciertas mediciones de laboratorio...

¿Cómo podemos calcular automáticamente el error instrumental?
¿Cómo podemos ajustar los valores a un modelo?
¿Cómo podemos graficar los resultados?

Respuesta

Computacionalmente. 
En este curso enseñaremos principios generales de programación, utilizando el lenguaje python.
Todo lo anterior se puede realizar en python (y sus librerías), aunque en este curso solamente los principios básicos.

3- Ejemplos
Definición
Un número natural $n$ se llama primo si no existen otros números naturales que lo dividan exactamente.
Un número natural que no es primo se llama compuesto.
Ejercicio
Diseñar un algoritmo que decida si un número es primo o compuesto.
Ejemplos


Ejemplo de números primos: 2, 3, 5, 7, 9, 11, 13, ...


Ejemplo de números compuestos: 4, 20, 27, ...


Descripción del problema
¿Cuales son las etapas de nuestro problema?

Entrada de datos: 
Un número natural $n$
Procesamiento de datos: 
Algoritmo para decidir si es primo o compuesto.
Salida de datos: 
Imprimir en pantalla "es primo" o "es compuesto".

Solución en lenguaje natural

Recorrer todos los enteros entre 2 y n-1.
Si al menos uno de estos números es divisor de n, entonces n es compuesto. Si no, es primo.

Solución en diagrama de flujo
<img src="images/flujo.png" width="800px" align="middle"/>
Solución en pseudocódigo
Solución en código
Hint: probar con 20, 1001, 10000000 y 15485863
End of explanation
"""


n = int(raw_input('Ingrese n: '))
es_primo = True
d = 2
while d < n and es_primo==True:
    if n % d == 0:
        es_primo = False
    d = d + 1
if es_primo:
    print n, 'es primo' 
else:
    print n, 'es compuesto'

"""
Explanation: Solución en código - optimización
Hint: probar con 10000000 y 15485863
End of explanation
"""


n = int(raw_input('Ingrese n: '))
es_primo = True
d = 2
while d <= n**0.5 and es_primo==True:
    if n % d == 0:
        es_primo = False
    d = d + 1
if es_primo:
    print n, 'es primo' 
else:
    print n, 'es compuesto'

"""
Explanation: Solución en código - optimización (2)
Hint: probar con 15485863
End of explanation
"""


