Ejemplo para comprobar si un entero (introducido por el usuario) es un número primo o no se utiliza el bucle for y la sentencia if… else.
Para comprender este ejemplo, debe tener el conocimiento de los siguientes temas de programación de C ++:
- C ++ if, if … else y anidado if … else
- C ++ para bucle
- Declaración de interrupción y continuación de C ++
Un entero positivo que solo es divisible por 1 y se conoce como número primo.
Por ejemplo: 13 es un número primo porque solo es divisible entre 1 y 13, pero 15 no es un número primo porque es divisible entre 1, 3, 5 y 15.
Nota: 0 y 1 no son números primos.
Ejemplo: comprobar el número primo
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Salida
Ingrese un entero positivo: 29 29 es un número primo.
Este programa toma un número entero positivo del usuario y lo almacena en la variable n.
Observe que la variable booleana isPrime se inicializa al true
comienzo del programa.
Dado que 0 y 1 no son números primos, primero verificamos si el número de entrada es uno de esos números o no. Si el número de entrada es 0 o 1 , entonces el valor de isPrime se establece en false
.
De lo contrario, el valor inicial de isPrime se deja sin cambios y for
se ejecuta el ciclo, que verifica si el número ingresado por el usuario es perfectamente divisible por i o no.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
El for
bucle se ejecuta a partir de i == 2
a i <= n / 2
y aumenta el valor de i en 1 con cada iteración.
El ciclo termina en i == n / 2
porque no podemos encontrar ningún factor para n más allá del número n / 2
. Entonces, cualquier iteración más allá n / 2
es redundante.
Si el número ingresado por el usuario es perfectamente divisible por i, entonces isPrime se establece en false
y el número no será un número primo.
Pero si el número de entrada no es perfectamente divisible por i en la totalidad del ciclo, significa que el número de entrada solo es divisible por 1 y ese número en sí.
Entonces, el número dado es un número primo.
En el caso de n == 2
, el for
bucle no se ejecuta y el valor de isPrime permanece true
.