Programa C ++ para verificar si un número es primo o no

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 truecomienzo 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 forse 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 forbucle se ejecuta a partir de i == 2a i <= n / 2y aumenta el valor de i en 1 con cada iteración.

El ciclo termina en i == n / 2porque no podemos encontrar ningún factor para n más allá del número n / 2 . Entonces, cualquier iteración más allá n / 2es redundante.

Si el número ingresado por el usuario es perfectamente divisible por i, entonces isPrime se establece en falsey 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 forbucle no se ejecuta y el valor de isPrime permanece true.

Articulos interesantes...