Imprimir determinados números primos

Sobre números primos he escrito bastantes programas y me he dado cuenta de que los profesores de programación tienen cierta fijación con ellos. Pero bueno, el programa de hoy imprime la cantidad de números primos que el usuario quiera y es interesante porque es un buen ejemplo de la utilidad de los ciclos infinitos, que ya habíamos visto antes.

Ok, el código es este:

#include
using namespace std;

int main()
{
    int cnt,i=0,ii,res,nc=0,np=0;
    cout <> cnt;
    for(;;)
    {
        i++;
        for(ii=1;ii<=i;ii++)
        {
            res=i%ii;
            if(res==0)
                nc=nc+1;
        }
        if(nc==2)
        {
            cout << i << " ";
            np++;
        }
        nc=0;
        if(np==cnt)
            break;
    }
}

Si tienen problemas 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 rango.

Lo que hicimos es que todo el programa estuviera dentro de un ciclo infinito que se detendrá cuando nuestra variable que se aumenta cada vez que obtenemos un numero primo np sea igual a la variable con la cantidad deseada de números primos cnt.

Pero recuerden que donde podemos usar un ciclo infinito, queda mucho mejor un ciclo while:

#include
using namespace std;

int main()
{
    int cnt,i=0,ii,res,nc=0,np=0;
    cout <> cnt;
    while(np!=cnt)
    {
        i++;
        for(ii=1;ii<=i;ii++)
        {
            res=i%ii;
            if(res==0)
                nc=nc+1;
        }
        if(nc==2)
        {
            cout << i << " ";
            np++;
        }
        nc=0;
    }
}

Únicamente ponemos la palabra while en lugar de for, copiamos la condición que ‘condicionaba’ (sí, lo se) el break y la pegamos dentro de los paréntesis del while pero de manera contraria (de == a != o de ).

10 thoughts on “Imprimir determinados números primos

  1. Hola, estube viendo el y me parece muy bueno😀 quisiera q me ayudes en este pequeño programa:
    El problema esta cuando uso for, supongamos que “l=3” entonces el mensaje dentro de los cout salen 3 veces uno debajo del otro, pero el cursor se queda en el reglon 14. ¿Como hago para que el cursor tambien baje a los reglones correspondientes?? (estoy usando Borland C++ 5.02 )
    *************************************
    #include
    #include
    void main()
    {
    clrscr();
    int g,m,s;
    char a,b,c,d,e,f,h,i,j,l,k;
    cout<<"ttAJUSTE Y CORRECCION DE ANGULOS DE UNA POLIGONAL";
    cout<<"nnIngrese:";
    cout<<"n**********************************";
    cout<<"n-Numero de ladosn-Verticen-Angulo correspondiente n";
    cout<<"**********************************";
    cout<>l;

    for(i=1; i<=l; i++)
    {
    cout<<"nnvertice grado minuto segundon";
    cout<>a;gotoxy(12,14);cin>>g;gotoxy(21,14);
    cin>>m;gotoxy(30,14);cin>>s;
    }
    getch();
    }

    Gracias por la ayuda.

  2. al final de los “cout” coloca “<<endl;" sin las comillas y ahi saltara automaticamente a una nueva linea

  3. Oye un favor, podrias decirme si mi programa esta bien, ya que no me corre y no se si sea que me falte algun dato. Debe de calcular los primeros n primos. Cheuq eel que tienes y en ese me base pero no me corre.

    //* Numeros primos*

    #include
    #include
    {
    int primo,n,cont,i,j,aux,residuo;
    printf(“n¿Cuantos numeros primos desea obtener?”);
    scanf(“%d”,&n);
    cont=1;
    aux=0;
    if(n<=1)
    {
    printf("nError, inserte un numero mayor o igual al 1");
    getc(stdin);
    }
    else
    {
    for (i=1;i<=n;i++)
    {
    aux=0;
    for (j=1;j<=i;j++)
    {
    if (i%j=0)
    {
    aux++;
    }
    if (aux=2)
    {
    printf("%dn",i);
    }
    }
    }
    }
    printf("nEsos son los ",n,"primeros numeros primos que existen");
    return0;
    }

  4. No lo corrí, pero en la línea de “if (aux=2)” tiene que llevar “==”, ya que es de comparación, el “=” solo, es de asignación
    Ej:
    a=b <– Asignación, lo que haya en b se coloca en a.
    if(a==b) <– Comparación, compara si lo que hay en a es igual a b

  5. hola por favor me gustria q me ayudaran con un programa en DEV C++ que dado un numero ejemplo 18 me imprima los numero pares antes de ese numero… graciias😀

  6. #include
    void main()
    {
    int x;
    for(x=1;x<101;x++) {
    if(x%2==0)
    cout<<x<<"t";
    }
    cin.get();
    }

    #include
    void main()
    {
    int x;
    for(x=2;x<101;x+=2) {
    cout<<x<> o cin.getline) tienes que utilizar dos veces “cin.get()” osea que al final del programa para poner una pausa, sin emplear getch(), (que te recomiendo) se usaría “cin.get();cin.get();”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s