Si buscamos en Google las mismas palabras que el título de este post encontraremos 396.000 resultados.

Personalmente, llevo un .c en mi pendrive llamado “numerosPrimos.c” el cual me ha sacado de más de un apuro. Es algo que siempre olvido, un algoritmo para calcular si un número es primo y al parecer, no soy el único.

A veces, las cosas más simples son las más difíciles de recordar.

A continuación pondré dicho código por si alguien llega aquí con esa duda le pueda servir, al fin y al cabo, soy estudiante y con este blog lo que pretendo es solucionar posibles problemas que puedan tener aquellos que llegan aquí.

int esPrimo(int a){
int b=0;
int res=0;//Es primo
int i=2;
while(i<a && b==0){
if(a%i==0){
b=1;
res=1;//No es primo
}else i++;
}
return res;
}

Esta función devuelve cero si el número SÍ es primo, y uno si NO lo es.

11 Responses to “Números primos en C.”
  1. er sholooooooo says:

    Aunque pueda parecer una tontería, es bastante útil este código para los que empezamso en esto de la programación.

    Sigue así.

    er_sholooooooo

  2. eduardo says:

    alguine podria explicarme como el programa obtiene el resultado , es ke no entiendo muy bien el proceso del programa..????

  3. jgutgil says:

    Perdona Eduardo, pero he estado muy ocupado y no me había dado cuenta de que habías escrito una consulta.

    A ver, este código recibe un número entero (a), el cual decide si es primo o no.

    En While, ponemos la condición de que a<i (i=2) y de que b=0, si una no se cumple, se acaba el bucle.

    Si el número es primo, nunca se entre en if, por lo que b siempre vale cero y llegamos a que a=i, entonces nos salimos del while, y devolvemos el resultado.

    Si resulta que dicho número (a) no es primo, entonces se ejecuta if y encuentra otro número por el que es divisible. Entonces ponemos b=1, nos salimos del while y devolvemos el resultado.

    Espero que te haya servido.

    Un saludo.

  4. darkhawk665 says:

    Para aquellos novatos, xDD :

    int esprimo(long numero)
    {
    int j=2; // no puede dividir en 0, no puede ser 1

    for(; j

  5. darkhawk665 says:

    int esprimo(long numero)
    {
    int j=2; // no puede dividir en 0, no puede ser 1
    for(; j

  6. NKO:9 says:

    Hola compañero estudiante,

    resulta que estoy aciendo un programa kon un menu y tal en C y una de las opciones era comprobar si era primo . El caso es que me gusto la sencillez de tu codigo pero parece k no me funciona kon numeros grandes.

    Nada me gustaria comentarlo.

    GRacias,

  7. admin says:

    De nada ome, por aquí va a ser un poco complicado ayudarte. Si sigues teniendo el problema y necesitas ayuda, pásate por el foro de SofLix y, en la sección de programación en C intentaré ayudarte con mucho gusto.

    Foro: http://www.soflix.com/foro

    Pues nada, un saludo!!!.

  8. Jair says:

    Gracias man , me estaba rompiendo la cabeza con este problema y con solo unos pasos me ha funcado, xever man te pasastes me has sacado de un buen apuro , ojala sigas aportando mas a este foro

  9. luis says:

    hola yo he creado un programa pero creo que esta mal porque siempre cumple que sea primo he definido con variables enteras me gustaria que me indicaran que es lo que tengo mal porque no me aclaro mucho , he realizado variaciones pero no acabo de dar agradeceria que me diejerais algo este es el programa :

    int main ()

    {

    int iNumero;

    printf(“\nIntroduce un Numero”);
    scanf (“%d”,&iNumero);

    while (iNumero %iNumero=0 && iNumero % 1=0);
    {
    printf(“\n El Numero introducido es Primo %d”,iNumero);
    }
    else
    {
    printf(“\n El numero introducido no es Primo %d”,iNumero);
    }

    system(“PAUSE”);
    return 0;

  10. Ivan Mrsnik says:

    Estoy buscando quien ha hecho programas de números primos, y tome de una página como el primero de marzo 01/09/2010, un código en C++ que superaba a uno mío varias veces que pase el mio estaba en php pase a perl a python y luego a C++, sacaba este del 1 a los 10 millones en 2 segundos, 100 millones como 30 segundos y 500 millones en como 10 minutos.

    Rehice el mio y le puse unas reglas especiales, nunca vistas para mi en ninguna parte donde hacen códigos para primos, aunque utiliza mucha memoria saca 1 a 500 millones en 18 segundos. Realmente saca un 0.13% mas ya que si lo pongo hasta 500 millones los ultimos no son primos pero siempre es a los ultimos números, no se porque, pero no me ha interesado mucho ya que he revisado en excel los primeros 30 mil números mandando calcular 31 mil , los saca en 0 segundos. Lo hice en una laptop intel comoprada hace 2 años(lenovo n200) con 3 gigas de memoria. Es tan rapido que php parace Lenguaje C trabajando con 200 millones me los saca en 17 segundos, aunque con php me consume mas memoria que con C. Estoy buscando quien ha hecho códigos de primos para comparar velocidad, y si serviria para sacar primos como hace GIMPPS, ya que prometen sumas de 125 y 150 mil dolares por primos de 10 millones y 100 millones de digitos.

  11. Pep says:

    Solucion definitiva:

    ————-Código completo—————————————————

    #include
    #include

    int primer(int ); //declaramos la funcion primer

    int main()
    {
    int a, b, res;
    printf(“\n a= “); //inicializamos el numero que queremos saber si es primo.
    scanf(“%d”, &a);
    fflush(stdin);

    res = primer(a); //llamamos a la función i asignamos un resultado
    if(res==1) printf(“%d es primer\n”, a, b); //devolvemos el resultado dependiendo de lo qua haya devuelto la funcion
    else printf(“\n %d no es primer\n”, a, b);
    system (“pause”);
    getchar(); //fin del programa
    }

    int primer(int a)
    {
    int i, compt= 0;
    for(i=2; i<a; i++)
    {
    if(a%i==0) compt+=1; //comp. si el numero es divisible entre alguno de los anteriores a él empezando por el 2.
    }
    if(compt==0) return 1; // si vario el contador es que solo es divisible entre el mismo (es primo)
    else return 2; // sino lo contrario
    }
    ———————————————————————————————————-

  12.  
Leave a Reply


   Beat diabetes   Diabetes diet