Curso de Programación – CLASE 16

(Creado por el analista de sistemas y docente Leonel Iván Saafigueroa)


NÚMEROS PRIMOS

Un número primo se puede entender como un número natural mayor a uno que sólo se puede dividir por dos números: el número 1 (uno) y por el mismo, es decir, tiene únicamente dos divisores.


Algo que atrae a los Matemáticos son los desafíos, la distribución de los números primos es algo que se viene estudiando desde hace más de 2000 años, actualmente un ingeniero de Tennesse ha descubierto uno nuevo, se trata del mayor número primo conocido. Lo han llamado M77232917 y se consigue con el número 2 elevado a 77.232.917 menos 1. El número tiene nada menos que 23 millones de dígitos.

En el siguiente cuadro veremos los primeros 25 números primos:

Un número primo sólo se puede dividir por dos números: el número 1 (uno) y el mismo, es decir, tiene únicamente dos divisores

Vamos a crear nuestro primer programa basado en una estructura condicional y el operador algebraico MOD (nos da el resto de una división):

Para esta primera versión se guarda el número ingresado por el usuario en una variable llamada n, la misma será divida por una variable llamada i, que tomará un valor que va de 1 a n, gracias a una estructura para.
El resultado de cada división es evaluado por un condicional si-entonces, que verifica que el resto sea igual a 0, de ser así suma 1 a la variable contar, la misma será iniciada siempre con el valor 0 antes de entrar en la estructura para. Un segundo condicional si-entonces analiza si el valor de contar es igual a 2, de ser así significa que n es primo.

Analizamos el código

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Algoritmo primos
Escribir "Ingrese número para analizar si es primo: "
// Guardamos el número a analizar en la variable n.
Leer n
// Creamos una variable para contar cuantas veces puede ser dividido "n".
Contar <- 0
// Recorremos en un buble todas las posibilidades desde 1 hasta el número ingresado.
Para i <- 1 Hasta n Hacer
// Dividimos el nímero por la variable del buble "i".
Si n%i=0 Entonces
// Si el resto da 0 sumamos 1 a la variable "contar".
contar <- contar + 1
FinSi
FinPara
// Si contar sumo 2 el número es primo.
Si contar = 2 Entonces
Escribir n, " es primo."
SiNo
Escribir n, " no es primo."
FinSi
FinAlgoritmo
Algoritmo primos Escribir "Ingrese número para analizar si es primo: " // Guardamos el número a analizar en la variable n. Leer n // Creamos una variable para contar cuantas veces puede ser dividido "n". Contar <- 0 // Recorremos en un buble todas las posibilidades desde 1 hasta el número ingresado. Para i <- 1 Hasta n Hacer // Dividimos el nímero por la variable del buble "i". Si n%i=0 Entonces // Si el resto da 0 sumamos 1 a la variable "contar". contar <- contar + 1 FinSi FinPara // Si contar sumo 2 el número es primo. Si contar = 2 Entonces Escribir n, " es primo." SiNo Escribir n, " no es primo." FinSi FinAlgoritmo
Algoritmo primos
	Escribir "Ingrese número para analizar si es primo: "
	// Guardamos el número a analizar en la variable n.
	Leer n
	// Creamos una variable para contar cuantas veces puede ser dividido "n".
	Contar <- 0
	// Recorremos en un buble todas las posibilidades desde 1 hasta el número ingresado.
	Para i <- 1 Hasta n Hacer
		// Dividimos el nímero por la variable del buble "i".
		Si n%i=0 Entonces
			// Si el resto da 0 sumamos 1 a la variable "contar".
			contar <- contar + 1
		FinSi
	FinPara
	// Si contar sumo 2 el número es primo.
	Si contar = 2 Entonces
		Escribir n, " es primo."
	SiNo
		Escribir n, " no es primo."
	FinSi
FinAlgoritmo

Ejecutamos el programa


Veamos el código en C++:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// NÚMEROS PRIMOS.
#include <iostream>
using namespace std;
int n;
int contar=0;
int i;
int main()
{
cout << "Ingrese número para analizar si es primo: ";
cin >> n;
// Recorremos en un bucle todas las posibilidades desde 1
// hasta el número ingresado.
for(i=1;i<=n;i++)
{
if(n%i==0)
{
// Si el resto da 0 sumamos 1 a la variable contar.
contar++;
}
}
// Si contar llego a sumar 2, el número es primo.
if(contar==2)
{
cout << n << " es primo." << endl;
}
else
{
cout << n << " no es primo." << endl;
}
return 0;
}
// NÚMEROS PRIMOS. #include <iostream> using namespace std; int n; int contar=0; int i; int main() { cout << "Ingrese número para analizar si es primo: "; cin >> n; // Recorremos en un bucle todas las posibilidades desde 1 // hasta el número ingresado. for(i=1;i<=n;i++) { if(n%i==0) { // Si el resto da 0 sumamos 1 a la variable contar. contar++; } } // Si contar llego a sumar 2, el número es primo. if(contar==2) { cout << n << " es primo." << endl; } else { cout << n << " no es primo." << endl; } return 0; }
// NÚMEROS PRIMOS.
#include <iostream>

using namespace std;

int n;
int contar=0;
int i;

int main()
{
    cout << "Ingrese número para analizar si es primo: ";
    cin >> n;
    // Recorremos en un bucle todas las posibilidades desde 1
    // hasta el número ingresado.
    for(i=1;i<=n;i++)
    {
        if(n%i==0)
        {
            // Si el resto da 0 sumamos 1 a la variable contar.
            contar++;
        }
    }
    // Si contar llego a sumar 2, el número es primo.
    if(contar==2)
    {
        cout << n << " es primo." << endl;
    }
    else
    {
        cout << n << " no es primo." << endl;
    }
    return 0;
}

Vamos a analizar línea por línea este código en C++:

Línea 1: // NÚMEROS PRIMOS.
Este es un comentario de una sola línea que indica el propósito del programa.

Línea 2: #include <iostream>
Esta línea incluye la biblioteca estándar iostream, que permite la entrada y salida de datos a través del teclado y la pantalla.

Línea 4: using namespace std;
Esto permite usar las funciones y variables de la biblioteca estándar sin tener que prefixarlas con el nombre de la biblioteca (en este caso, “std“).

Línea 6: int n;
Declara una variable entera llamada n, que será utilizada para almacenar el número ingresado por el usuario.

Línea 7: int contar=0;
Declara una variable entera llamada contar y la inicializa en 0. Esta variable contará el número de factores del número ingresado.

Línea 8: int i;
Declara una variable entera llamada i, que será utilizada como índice en un bucle.

Línea 10: int main()
Es el punto de entrada del programa, donde se ejecuta la función principal.

Línea 12: cout << "Ingrese número para analizar si es primo: ";
Imprime una mensaje al usuario solicitando que ingrese un número para analizar.

Línea 13: cin >> n;
Lee un entero desde el teclado y lo asigna a la variable n.

Línea 16: for(i=1;i<=n;i++) { ... }
Inicia un bucle que iterará desde 1 hasta el número ingresado (n). El índice i recorrerá cada posible factor del número.

Línea 18: if(n%i==0) { ... }
Dentro del bucle, se verifica si el resto de la división de n entre i es 0 (es decir, si i es un factor de n). Si es así, se incrementa el contador contar.

Línea 25: if(contar==2) { ... }
Después del bucle, se verifica si el contador contar es igual a 2. Si es así, significa que solo existen dos factores (1 y el propio número), por lo que el número es primo.

Línea 27: cout << n << " es primo." << endl;
Si el número es primo, se imprime un mensaje indicando que el número ingresado es primo.

Línea 29: else { ... }
Si el contador no es igual a 2, significa que existen más de dos factores y el número no es primo. Se imprime un mensaje indicando que el número ingresado no es primo.

Línea 33: return 0;
Finaliza la función principal con código cero.


Ahora el código en PYTHON:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# NÚMEROS PRIMOS.
contar = 0
n = int(input("Ingrese número para analizar si es primo: "))
# Recorremos en un bucle todas las posibilidades desde 1
# hasta el número ingresado.
for i in range(1, n+1):
if n % i == 0:
#Si el resto da 0 sumamos 1 a la variable contar.
contar = contar + 1
# Si contar llego a sumar 2, el número es primo.
if contar == 2:
print(f"{n} es primo.")
else:
print(f"{n} no es primo.")
# NÚMEROS PRIMOS. contar = 0 n = int(input("Ingrese número para analizar si es primo: ")) # Recorremos en un bucle todas las posibilidades desde 1 # hasta el número ingresado. for i in range(1, n+1): if n % i == 0: #Si el resto da 0 sumamos 1 a la variable contar. contar = contar + 1 # Si contar llego a sumar 2, el número es primo. if contar == 2: print(f"{n} es primo.") else: print(f"{n} no es primo.")
# NÚMEROS PRIMOS.
contar = 0
n = int(input("Ingrese número para analizar si es primo: "))
# Recorremos en un bucle todas las posibilidades desde 1
# hasta el número ingresado.
for i in range(1, n+1):
	if n % i == 0:
		#Si el resto da 0 sumamos 1 a la variable contar.
		contar = contar + 1

# Si contar llego a sumar 2, el número es primo.
if contar == 2:
	print(f"{n} es primo.")
else:
	print(f"{n} no es primo.")

Vamos a analizar línea por línea este código en PYTHON:

Línea 1: # NÚMEROS PRIMOS.

  • Esta es una línea de comentario que indica el propósito del programa, que es analizar si un número es primo.

Línea 2: contar = 0

  • Se declara una variable llamada “contar” y se le asigna un valor inicial de 0. Esta variable será utilizada para contar los factores del número ingresado por el usuario.

Línea 3: n = int(input("Ingrese número para analizar si es primo: "))

  • Se pregunta al usuario que ingrese un número, y se le asigna a la variable “n“. La función “input()” permite al usuario ingresar texto, pero en este caso queremos un número entero, por lo que utilizamos el método “int()” para convertir el texto ingresado a un número entero.

Línea 4: # Recorremos en un bucle todas las posibilidades desde 1

  • Esta es una línea de comentario que indica que vamos a realizar un ciclo que recorra todos los números posibles desde 1 hasta el número ingresado por el usuario.

Línea 5: # hasta el número ingresado.

  • Continúa la explicación del anterior punto, señalando que el ciclo será realizado hasta llegar al número ingresado por el usuario.

Líneas 6-9:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
for i in range(1, n+1):
if n % i == 0:
#Si el resto da 0 sumamos 1 a la variable contar.
contar = contar + 1
for i in range(1, n+1): if n % i == 0: #Si el resto da 0 sumamos 1 a la variable contar. contar = contar + 1
for i in range(1, n+1):
        if n % i == 0:
                #Si el resto da 0 sumamos 1 a la variable contar.
                contar = contar + 1
  • El ciclo se ejecuta con un valor de “i” que va desde 1 hasta el número ingresado por el usuario (inclusive). En cada iteración, se verifica si el resto de la división del número ingresado por el valor actual de “i” es igual a 1. Si es así, significa que “i” es un factor del número ingresado y se incrementa el contador “contar“.

Línea 11: # Si contar llego a sumar 2, el número es primo.

  • Esta línea de comentario señala la condición que determinará si el número ingresado por el usuario es primo o no.

Líneas 12 y 15:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if contar == 2:
print(f"{n} es primo.")
else:
print(f"{n} no es primo.")
if contar == 2: print(f"{n} es primo.") else: print(f"{n} no es primo.")
if contar == 2:
        print(f"{n} es primo.")
else:
        print(f"{n} no es primo.")
  • Si el contador “contar” tiene un valor de 2, significa que solo hay dos factores del número ingresado (1 y el mismo número), por lo que se imprime en pantalla que el número es primo. En caso contrario, se imprime que el número no es primo.


OPTIMIZANDO EL CÓDIGO

Nuestro programa anterior buscaba la cantidad total de divisores que tiene el número ingresado, pero conociendo si tiene más de 2 divisores seria suficiente para saber que no es primo, y no haría falta contar todos sus divisores.

Esto lo resolvemos con una estructura Mientras (while), con esta implementación vamos a ganar velocidad sobre todo con números de muchas cifras.

Vamos a crear la segunda versión de nuestro programa hacendo uso de una estructura Mientras (while):

Para esta segunda versión se guarda el número ingresado por el usuario en una variable llamada n, la misma será divida por una variable llamada i, que tomará un valor que va de 1 a n, mientras que i sea menor o igual a n.
El resultado de cada división es evaluado por un condicional si-entonces, que verifica que el resto sea igual a 0, de ser así suma 1 a la variable contar. Aquí a diferencia del programa antrior, si la variable contar llegara a ser mayor que 2, se le asignará a i el valor de n para finalizar la busqueda. El segundo condicional si-entonces analiza si el valor de contar es igual a 2, de ser así significa que n es primo.

Analizamos el código

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Algoritmo primos2
Escribir 'Ingrese número para analizar si es primo: '
// Guardamos el número a analizar en la variable n.
Leer n
// Creamos una variable para contar cuantas veces puede ser dividido "n".
contar <- 0
i <- 1
// Recorremos en un buble todas las posibilidades mientras la variable "i" sea menor o igual a la variable "n".
Mientras i<=n Hacer
Si n MOD i=0 Entonces
// Si el resto da 0 sumamos 1 a la variable "contar".
contar <- contar+1
Si contar>2 Entonces
// Si contar ya supera a 2 asignamos n a i para salir del bucle.
i <- n
FinSi
FinSi
i <- i+1
FinMientras
// Si contar sumo 2 el número es primo.
Si contar=2 Entonces
Escribir n, ' es primo.'
SiNo
Escribir n, ' no es primo.'
FinSi
FinAlgoritmo
Algoritmo primos2 Escribir 'Ingrese número para analizar si es primo: ' // Guardamos el número a analizar en la variable n. Leer n // Creamos una variable para contar cuantas veces puede ser dividido "n". contar <- 0 i <- 1 // Recorremos en un buble todas las posibilidades mientras la variable "i" sea menor o igual a la variable "n". Mientras i<=n Hacer Si n MOD i=0 Entonces // Si el resto da 0 sumamos 1 a la variable "contar". contar <- contar+1 Si contar>2 Entonces // Si contar ya supera a 2 asignamos n a i para salir del bucle. i <- n FinSi FinSi i <- i+1 FinMientras // Si contar sumo 2 el número es primo. Si contar=2 Entonces Escribir n, ' es primo.' SiNo Escribir n, ' no es primo.' FinSi FinAlgoritmo
Algoritmo primos2
	Escribir 'Ingrese número para analizar si es primo: '
	// Guardamos el número a analizar en la variable n.
	Leer n
	// Creamos una variable para contar cuantas veces puede ser dividido "n".
	contar <- 0
	i <- 1
	// Recorremos en un buble todas las posibilidades mientras la variable "i" sea menor o igual a la variable "n".
	Mientras i<=n Hacer
		Si n MOD i=0 Entonces
			// Si el resto da 0 sumamos 1 a la variable "contar".
			contar <- contar+1
			Si contar>2 Entonces
				// Si contar ya supera a 2 asignamos n a i para salir del bucle.
				i <- n
			FinSi
		FinSi
		i <- i+1
	FinMientras
	// Si contar sumo 2 el número es primo.
	Si contar=2 Entonces
		Escribir n, ' es primo.'
	SiNo
		Escribir n, ' no es primo.'
	FinSi
FinAlgoritmo

Ejecutamos el programa


Veamos el código en C++:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// NÚMEROS PRIMOS 2.
#include <iostream>
using namespace std;
int n;
int contar=0;
int i=1;
int main()
{
cout << "Ingrese número para analizar si es primo: ";
cin >> n;
// Recorremos en un bucle todas las posibilidades desde 1
// hasta el número ingresado.
while(i<=n)
{
if(n%i==0)
{
// Si el resto da 0, sumamos 1 a la variable contar.
contar=contar+1;
if(contar>2)
{
// Si "contar" ya supera a 2, asignamos n a i para salir del bucle.
i = n;
}
}
i = i+1;
}
// Si contar llego a sumar 2, el número es primo.
if(contar==2)
{
cout << n << " es primo." << endl;
}
else
{
cout << n << " no es primo." << endl;
}
return 0;
}
// NÚMEROS PRIMOS 2. #include <iostream> using namespace std; int n; int contar=0; int i=1; int main() { cout << "Ingrese número para analizar si es primo: "; cin >> n; // Recorremos en un bucle todas las posibilidades desde 1 // hasta el número ingresado. while(i<=n) { if(n%i==0) { // Si el resto da 0, sumamos 1 a la variable contar. contar=contar+1; if(contar>2) { // Si "contar" ya supera a 2, asignamos n a i para salir del bucle. i = n; } } i = i+1; } // Si contar llego a sumar 2, el número es primo. if(contar==2) { cout << n << " es primo." << endl; } else { cout << n << " no es primo." << endl; } return 0; }
// NÚMEROS PRIMOS 2.
#include <iostream>

using namespace std;

int n;
int contar=0;
int i=1;

int main()
{
    cout << "Ingrese número para analizar si es primo: ";
    cin >> n;
    // Recorremos en un bucle todas las posibilidades desde 1
    // hasta el número ingresado.
    while(i<=n)
        {
        if(n%i==0)
        {
            // Si el resto da 0, sumamos 1 a la variable contar.
            contar=contar+1;
            if(contar>2)
            {
                // Si "contar" ya supera a 2, asignamos n a i para salir del bucle.
                i = n;
            }
        }
        i = i+1;
    }

    // Si contar llego a sumar 2, el número es primo.
    if(contar==2)
    {
        cout << n << " es primo." << endl;
    }
    else
    {
        cout << n << " no es primo." << endl;
    }
    return 0;
}

Vamos a analizar línea por línea este código en C++:

Línea 1: // NÚMEROS PRIMOS 2.
Esto es un comentario en C++. El texto entre los caracteres / y * (y viceversa) se ignora por el compilador.
En este caso, el comentario indica que se trata del segundo programa para verificar si un número es primo.

Línea 2: #include <iostream>
Esta línea incluye la biblioteca estándar iostream, que permite la entrada y salida de datos en la consola. La función iostream es una de las más utilizadas en C++.

Línea 4: using namespace std;
Esta línea permite utilizar las clases y funciones definidas en el espacio de nombres estándar (std) sin tener que precedirlas con std::. En este caso, se utiliza para acceder a la clase cout y otras funciones relacionadas.

Líneas 6-8: int n; int contar=0; int i=1;
Estas líneas declaran tres variables:

  • n: un entero que almacenará el número que se va a analizar.
  • contar: un entero inicializado en 0, que se utilizará para contar la cantidad de divisores del número n.
  • i: un entero inicializado en 1, que se utilizará como índice en el bucle.

Línea 10: int main()
Esta es la función principal del programa. Su retorno determina el estado de finalización del programa.

Líneas 12-13: cout << "Ingrese número para analizar si es primo: "; cin >> n;
Estas líneas imprimen un mensaje en la consola solicitando al usuario que ingrese un número y, luego, leen ese número desde la entrada estándar. El contenido del número ingresado se almacena en n.

Línea 14-15: // Recorremos en un bucle todas las posibilidades desde 1 hasta el número ingresado.
Este es otro comentario que indica el objetivo del bucle.

Líneas 16-29: while(i<=n) { ... }
Este es el bucle principal del programa, que recorre todos los números desde 1 hasta el número ingresado (n). El bucle se ejecuta mientras i sea menor o igual a n.

Dentro del bucle:

  • Línea 18: if(n%i==0)
    Esto comprueba si el resto de la división de n entre i es igual a 0. Si es así, se cumple la condición del if.
  • Líneas 20-21: { // Si el resto da 0, sumamos 1 a la variable contar. contar=contar+1; ... }
    Si el resto es 0, se incrementa en 1 la variable contar. Si contar ya tiene un valor mayor a 2, entonces se asigna a i el valor de n, para que el bucle termine.
  • Línea 22: if(contar>2) { // ... }
    Si la cantidad de divisores (contar) supera a 2, se sale del bucle asignando a i el valor de n.
  • Línea 28: i = i+1;
    Se incrementa en 1 el valor de i, para seguir recorriendo los números.

Líneas 32-39: if(contar==2) { ... } else { ... }
Si la cantidad de divisores (contar) es igual a 2, entonces se imprime un mensaje indicando que el número ingresado es primo. Si no es así (es decir, si contar tiene algún valor distinto de 2), se imprime otro mensaje indicando que el número ingresado no es primo.

Línea 27: return 0;
La función main() termina con la instrucción return 0, lo cual indica que el programa ha finalizado correctamente.


Ahora el código en PYTHON:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# NÚMEROS PRIMOS 2.
# Guardamos el número a analizar en la variable n.
n = int(input("Ingrese número para analizar si es primo: "))
# Creamos una variable para contar cuantas veces puede ser dividido "n".
contar = 0
i = 1
# Recorremos en un buble todas las posibilidades mientras la variable "i"
# sea menor o igual a la variable "n".
while i <= n:
if n % i == 0:
# Si el resto da 0, sumamos 1 a la variable "contar".
contar = contar + 1
if contar > 2:
# Si "contar" ya supera a 2, asignamos n a i para salir del bucle.
i = n
i = i + 1
# Si contar sumo 2, el número es primo.
if contar == 2:
print(f"{n} es primo.")
else:
print(f"{n} no es primo.")
# NÚMEROS PRIMOS 2. # Guardamos el número a analizar en la variable n. n = int(input("Ingrese número para analizar si es primo: ")) # Creamos una variable para contar cuantas veces puede ser dividido "n". contar = 0 i = 1 # Recorremos en un buble todas las posibilidades mientras la variable "i" # sea menor o igual a la variable "n". while i <= n: if n % i == 0: # Si el resto da 0, sumamos 1 a la variable "contar". contar = contar + 1 if contar > 2: # Si "contar" ya supera a 2, asignamos n a i para salir del bucle. i = n i = i + 1 # Si contar sumo 2, el número es primo. if contar == 2: print(f"{n} es primo.") else: print(f"{n} no es primo.")
# NÚMEROS PRIMOS 2.

# Guardamos el número a analizar en la variable n.
n = int(input("Ingrese número para analizar si es primo: "))
# Creamos una variable para contar cuantas veces puede ser dividido "n".
contar = 0
i = 1
# Recorremos en un buble todas las posibilidades mientras la variable "i" 
# sea menor o igual a la variable "n".
while i <= n:
	if n % i == 0:
		# Si el resto da 0, sumamos 1 a la variable "contar".
		contar = contar + 1
		if contar > 2:
			# Si "contar" ya supera a 2, asignamos n a i para salir del bucle.
			i = n
	i = i + 1
	
# Si contar sumo 2, el número es primo.
if contar == 2:
    print(f"{n} es primo.")
else:
    print(f"{n} no es primo.")

Vamos a analizar línea por línea este código en PYTHON:

Línea 1: # NÚMEROS PRIMOS 2.
Este es un comentario en Python. El texto entre las comillas dobles (“”” o ”) se ignora por el intérprete.

Línea 4: n = int(input("Ingrese número para analizar si es primo: "))
Esta línea permite ingresar al usuario un número entero y lo guardan en la variable n. La función input() retorna una cadena de caracteres, por lo que se usa int() para convertirla a un entero.

Línea 6: contar = 0
Esta línea declara una variable entera llamada contar y la inicializa en cero. Esta variable será usada para contar la cantidad de divisores del número ingresado.

Línea 7: i = 1
Esta línea declara una variable entera llamada i y la inicializa en uno. Esta variable será usada como índice en el bucle.

Líneas 10-17:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
while i <= n:
if n % i == 0:
contar = contar + 1
if contar > 2:
i = n
i = i + 1
while i <= n: if n % i == 0: contar = contar + 1 if contar > 2: i = n i = i + 1
while i <= n:
    if n % i == 0:
        contar = contar + 1
        if contar > 2:
            i = n
    i = i + 1

Este es un bucle while que recorre todos los números desde uno hasta el número ingresado (n). El bucle se ejecuta mientras i sea menor o igual a n. Dentro del bucle:

  • Línea 11: if n % i == 0
    Esto comprueba si el resto de la división de n entre i es igual a cero. Si es así, se cumple la condición del if.
  • Líneas 12-13: { ... }
    Si el resto es cero, se incrementa en uno la variable contar. Si contar ya tiene un valor mayor a dos, entonces se asigna a i el valor de n, para que el bucle termine.
  • Línea 17: i = i + 1
    Se incrementa en uno el valor de i, para seguir recorriendo los números.

Líneas 20-23:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if contar == 2:
print(f"{n} es primo.")
else:
print(f"{n} no es primo.")
if contar == 2: print(f"{n} es primo.") else: print(f"{n} no es primo.")
if contar == 2:
    print(f"{n} es primo.")
else:
    print(f"{n} no es primo.")

Si la cantidad de divisores (contar) es igual a dos, entonces se imprime un mensaje indicando que el número ingresado es primo. Si no es así (es decir, si contar tiene algún valor distinto de dos), se imprime otro mensaje indicando que el número ingresado no es primo.

Nota: En Python, no hay una instrucción return 0, como en C o C++. Cuando un programa termina correctamente, simplemente termina ejecutándose.


TAREA PARA EL HOGAR

  1. Modifcar el programa para poder buscar los primeros 1000 números primos.
  2. Crear otra versión del programa que pueda buscar números primos por rangos. Por ejemplo del 1000 al 2000.