Programa para la búsqueda inmediata de los números primos

void main()    
{
   int n,i,j,flag=0,out;

   clrscr();

   printf("enter the num\n");

   scanf("%d",&n);

   for(i=n+1;i<=100;i++)
   {

      flag=0;

      for(j=2;j<i;j++)
      {
         if(i%j==0)
         {
            flag=1;
            break;
         }
      }

      if(flag==0)
      {
         printf("next prime is:%d",i);
         break;
      }
   }

   getch();

}

En este código cuando entré en la entrada como 8 . Luego, i=9,j=2
luego de 9%2==0 la condición es falsa y 9, se imprimirán como el próximo primer número que es la respuesta equivocada.Por favor me dan solución correcta para este programa.

  • heh? Yo no entendía.
  • then 9%2==0 the condition becomes false..de modo que ambos son correctos 🙂
  • ¿te perdiste el if(flag==0) de verificación?
  • yo no puedo capaces de entender el concepto detrás de ths alguien explique ths pls

2 Kommentare

  1. 2

    He comprobado su programa y se produce la salida correcta.

    Ahora para la explicación, para el caso de que usted describe

    En este código cuando entré en la entrada como 8 . Luego, i=9,j=2, a continuación, el 9%2==0 el
    la condición se convierte en falsa y 9, se imprimirán como el próximo primer número
    cual es la respuesta equivocada.

    Así que, va a conseguir (9%2 == 0) => false. Entonces no va a comprobar el if(flag==0) condición de impresión y 9 como el próximo primer. en lugar de ello, se aumentará la j y continuar el bucle hasta j<i.

    Programa para la búsqueda inmediata de los números primos

    Por lo tanto, va a producir la respuesta correcta.

    • El bucle externo debe ignorar, incluso los números, ya que ni siquiera los números (otro de 2) son los principales. Así, en la parte superior del bucle externo inicializar i a n+1 si n es par, y n+2 si n es impar. De la siguiente manera: i = n%2 ? n+2 : n+1; a Continuación, saltar, incluso los números de la iteración 2 de la siguiente manera: for (i = n%2 ? n+2 : n+1; ; i+=2) Esto producirá los mismos resultados, pero en la mitad de tiempo.
  2. 0

    De verificación del siguiente código :

    void main()
    {
        int n,i,j;
        clrscr();
    
        printf("Enter the number : ");
        scanf("%d",&n);
    
        for(i=n+1;;i++)
        {
            for(j=2;j<i;j++)
            {
                if(i%j==0)
                    break;
            }
    
            if(j==i)
            {
                printf("The next prime number is :%d",i);
                break;
            }
        }
        getch();
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea