ayuda con C (numeros primos)

Iniciado por fujikawa, 22 Febrero 2012, 18:42 PM

0 Miembros y 1 Visitante están viendo este tema.

fujikawa

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.

$Edu$

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

dnsdirm

Podrias hacer la funcion asi:

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++;
    }
}
"Si te doy un peso, te lo gastas.Si te doy una idea la enriqueces"

farresito

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.

fujikawa

#4
Gracias por sus respuestas, creo que ya lo voy entendiendo XD