Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fujikawa en 22 Febrero 2012, 18:42 pm



Título: ayuda con C (numeros primos)
Publicado por: fujikawa en 22 Febrero 2012, 18:42 pm
Hola, me gustaria perdir su ayuda para realizar un programa que pida un rango de valores y me ordene sus primos, por ejemplo:
si el usuario da un rango de 10-50 el programa debe imprimir los numeros primos que estan entre esos valores, y ordenarlos en forma ascendente.

Agradeceria su ayuda, he echo un programa en donde el usuario introduce un solo numero y determina si es primo o no, pero con un rango de valores estoy un poco perdido, gracias por sus sugerencias.


Título: Re: ayuda con C (numeros primos)
Publicado por: $Edu$ en 22 Febrero 2012, 18:52 pm
Ahora implementale un bucle que vaya desde 10 al 50 y si es primo lo muestra.

Es decir, haras una funcion ahora que llamara a la que ya creaste para verificar si es primo o no


Título: Re: ayuda con C (numeros primos)
Publicado por: dnsdirm en 23 Febrero 2012, 01:54 am
Podrias hacer la funcion asi:
Código:
void primos(int in, int fin)
{
    int i, res;
    int bnd; /* bandera 0 es falso y verdadero es 1 */
    while(in <= fin)
    {
        i = 2;
        bnd = 0;
        while(i < in && bnd == 0)
        {
            res = in % i;
            if(res == 0)
                bnd = 1;
            i++;
        }
        if(bnd == 0)
            printf("\n %d",in);
        in++;
    }
}


Título: Re: ayuda con C (numeros primos)
Publicado por: farresito en 23 Febrero 2012, 02:22 am
No he probado el código de @dnsdirm, pero tiene toda la pinta de funcionar. Si buscas simplicidad en el código, tendrás consecuentemente ineficiencia. Ahora bien, si lo quieres más eficiente, tendrás que indagar un poco más y darte cuenta de ciertas cosas. Algunas más simples, otras no tanto.Te oriento:

Suponiendo el número, por ejemplo, 423
* Si es divisible por 2, ya no es necesario comprobar todos los números restantes hasta el 423. Esto es aplicable al resto de números básicos. Si no es divisible por 2, no lo será por 4, ni por 6. Por lo tanto, debes comprobar si es divisible:
     -Por 2, por 3, por 5, por 7.
Esto eliminará la mayoría. Si no lo elimina, yo comprobaría si es divisible por los números primos anteriormente seleccionados. Por ej. el número 221 no es divisible por ninguno de los anteriormente citados (2, 3, 5, 7) pero si por un primo (13).

Si no es divisible por 2, 3, 5, 7 ni por ningún primo, entonces es número primo. No estoy seguro del todo, pero debería ser así.

Un abrazo.


Título: Re: ayuda con C (numeros primos)
Publicado por: fujikawa en 24 Febrero 2012, 18:22 pm
Gracias por sus respuestas, creo que ya lo voy entendiendo XD