• Blog
  • Acerca
  • Autor
  • Contacto
  • Saber si un número es primo o no

    Anteriormente vimos como imprimir los números primos en un rango determinado por el usuario, ahora la idea es pedirle al usuario un número y decirle si es primo o no es primo.

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int num,c,res,nc=0;
      cout<<"Introduce un número: "; cin>>num;
      for(c=1;c<=num;c++)
      {
        res=num%c;
        if(res==0)
          nc++;
        if(nc>2)
          break;
      }
      if(nc==2)
        cout<<"Es primo";
      else
        cout<<"No es primo";
      cin.get();cin.get();
    }

    En sí, es lo mismo que el anterior. Para darle mas presentación podemos hacer que no se salga a la primera, sino hasta que se introduzca, por ejemplo, un cero. Esto se hace con un ciclo do while.

    #include<iostream>
    using namespace std;
     
    int main()
    {
      int num=1,c,res,nc=0,rep=0;
      while(num!=0)
      {
        cout<<"Introduce un número: ";
        if(rep==1)
        {
          cout<<" --> Para salir oprime cero: ";
        }
        rep++;
        cin>>num;
        for(c=1;c<=num;c++)
        {
          res=num%c;
          if(res==0)
            nc++;
        }
        if(nc==2)
          cout<<"Es primo\n\n";
        else
          cout<<"No es primo\n\n";
        nc=0;
      }
    }

    ¿Alguien sabe porqué la variable num empieza en 1 en este caso?

    1. Jesus dice:

      Muchas gracias por tu gran trabajo, quisiera saber si tambien podrías hacer dar un ejemplo para saber si un numero es primo o no pero “sin cliclos”; osea sin for y sin while solo if y else.
      Te agredecería mucho tu ayuda.

      • THEbatzuk dice:

        Sin ciclos lo veo difícil. Para saber si un número es primo necesitamos checar si es divisible entre los números menores a él, si resulta que solo se divide entre 1 y él mismo, entonces es primo.

        Pero nada es imposible, también puedes checar solo con ifs si es divisible entre 2, luego entre 3, entre 5, 7 y 11, si en alguno de ellos el residuo es 0, no es primo, solo teniendo cuidado de no hacer la división cuando sea el mismo numero (5 y 5 por ejemplo). Pero no hay seguridad que funcione con números grandes.

        ¿Un poco confuso ese párrafo no? Mejor te contesto con un post, espéralo :)

    2. jeraldin dice:

      gracias por desir como es un numero primo por fin podre pasa la materi

    3. AdP dice:

      ¿Por qué usas la variable “num” como límite superior del bucle? Sería suficiente con alcanzar la parte entera de “sqrt(num)”.

    4. Luis Enrique dice:

      Si hola seria bueno que alguien publicara un codigo que pasandole una cierta cantidad de cifras me mostrara un primo correspondiente, es decir entrando por ejemplo 3 me muetre “997″.

    5. Daniel dice:

      Hola! Me gustaría saber
      la variable nc qué es???

    6. Carlos dice:

      ese algoritmo funciona pero es extremadamente ineficiente, además no tiene en cuenta el hecho de que no es necesario iterar entre 1 y num, una mejor alternativa seria iterar entre 1 y la raiz cuadrada de num

      • THEbatzuk dice:

        Estoy de acuerdo que no es la mejor forma de hacerlo, pero de ahí a que sea ‘extremadamente ineficiente’ hay un salto muy grande. Además de que el público para el que está diseñado este blog son personas ‘no muy expertas’ en programación que busca ayuda para hacer sus tareas.

    7. Ronny dice:

      Muy buen post…
      Pero, que es nc? seria bueno que hubieran comientarios describiendo cada linea de codigo par la orientacion los visitantes de la web… GRACIAS.

    8. Meli dice:

      OMG, Excelente el código

    9. Hector dice:

      Muy buena la web! Quería aportar un granito de arena optimizando este código un poquito.

      La mejora sería luego de la siguiente línea
      res=num%c;
      y simplemente agregar
      if(nc>2)
      break;

      de estar forma evitamos seguir contando al vicio.

      Simplemente eso.
      Saludos

    10. Meli dice:

      Alguien puede ayudarme en una tarea? mi correo es melissasantacruz@hotmail.com ^^ es importante u.u

    11. manuel dice:

      ola quisiera saber como sacar si un numero es primo desde una matriz de un salto especifico.

    12. Claudia dice:

      hola soy nueva en esto y quería saber si me podrían ayudar con un programa q no me sale

    13. jorge dice:

      hola como se puede poner el en mismo programa que muestre los primos en un rango y q diga si el numero que ingresaste es primo?

    14. Ricardo dice:

      Hola, una pregunta…. Hice un programa en C que me da 10 numeros aleatorios, como puedo aplicar esta “ley de primos” para determina cuantos primos hay entre esos numeros aleatorios ?? :S

      Saludos ,.., y muy bueno el blog :P

    15. MUY facil num || numero empieza en cero para que pueda entrar a en ciclo while ya que While si la condicion es falsa se termina hay mismo y no deja entrar :D y como 1 no es igual a 0 dentra, pero si quisiera dar solo una pasada usaría un DO WHILE ya que el DO WHILE deja por lo menos hacer un recorrido y al final lee la condición de que ingreses un numero distinto a cero :D xau

    16. etyiñ+orq dice:

      ustedes no saben explicar pero listo

    1. [...] preguntaban en los comentarios de este post: Primo o no, que si habría alguna forma de hacer ese mismo programa pero sin ciclos. [...]

    2. [...] un programa que cuente la cantidad de números primos que hay en un rango, no se ha conformado con saber si un número es primo o no o con saber cómo mostrar los números primos en un rango, así que le vamos a ayudar con la única [...]

    3. [...] para entender cómo obtuvimos los números primos, deberían darle una revisada a estos posts: Saber si es primo o no y Primos en un [...]

    Hola, escribe aquí tu comentario: