none
Ayuda programa en C no se cómo actúa, muchas gracias! RRS feed

  • Pregunta

  • Buenas tardes.

    Quería saber si alguien sabría descifrar como actúa este trozo de codigo en C. Lo que hace es, introduciendo un nº límite,  ponerte los nº primos desde ese nº límite hasta el 0.

    Lo que pasa es que no consigo averiguar como actúa para que se lleve a cabo.

    Es urgentísimo, por favor ayúdenme muchas gracias!

    int operacion_listadoprimos(int limite)

    {
    int n, divisor;

    for (n=2; n<=limite; n++)    
    {
    for(divisor=2; n%divisor!=0; divisor++) ;

    if (divisor==n)

    printf("\n%d\n",n); 
    }
    }
    return n;  
    }

    URGENTEEEE! GRACIAS!

    domingo, 6 de mayo de 2012 18:42

Respuestas

  • Quiero saber cuales son los primos hasta el 20. El argumento de la función será entonces 20.

    Empiezo con el número 2.

    Lo divido por el divisor 2 y compruebo su remanente 2%2 es 0 por tanto el bucle termina, n es 2 y divisor es 2. Como son iguales, son primos.

    voy con el 3

    3%2 es 1, sigo, 3%3 es 0, termino. divisor 3, número 3, iguales. Primo.

    vamos con el 4. 4%2 es 0, termina. divisor 2 número 4, distintos, cuatro no es primo.

    vamos con el 5. 5%2 es 1, 5%3 es 2, 5%4 es 1, 5%5 es 0. Termina. divisor 5, número 5. Son iguales. Es primo.

    y así hasta el 20.

    Los primos hasta límite de 20 son : 2, 3, 5, 7, 11, 13, 17, 19. 

    • Propuesto como respuesta webJoseModerator domingo, 6 de mayo de 2012 20:07
    • Marcado como respuesta mariovibla domingo, 6 de mayo de 2012 20:47
    domingo, 6 de mayo de 2012 19:53

Todas las respuestas

  • Funciona comprobando que el número no es divisible por ningún otro menor que él

    for(divisor=2; n%divisor!=0; divisor++)

    por ejemplo si el límite es 100 y el número es 23, lo divide por 2, luego por 3, luego por 4, luego por... 22, si en ningún caso el remanente de la división fue 0, entonces divisor será 23 al terminar el bucle y n será primo, ya que solamente divide por si mismo.

    Ahora, C no es un lenguaje desconocido (al menos para muchos de los que andan por aquí), por lo que no es necesario descifrarlo.

    domingo, 6 de mayo de 2012 19:11
  • pero a qué te refieres con que el limite es 100 y el número 23? No te entiendo..   

    el bucle for(divisor=2; n%divisor!=0; divisor++) exactamente cuando termina?

    lo necesito descifrar ya que mañana tengo que defenderlo ante un "tribunal" :)

    gracias por las molestias

    domingo, 6 de mayo de 2012 19:37
  • Quiero saber cuales son los primos hasta el 20. El argumento de la función será entonces 20.

    Empiezo con el número 2.

    Lo divido por el divisor 2 y compruebo su remanente 2%2 es 0 por tanto el bucle termina, n es 2 y divisor es 2. Como son iguales, son primos.

    voy con el 3

    3%2 es 1, sigo, 3%3 es 0, termino. divisor 3, número 3, iguales. Primo.

    vamos con el 4. 4%2 es 0, termina. divisor 2 número 4, distintos, cuatro no es primo.

    vamos con el 5. 5%2 es 1, 5%3 es 2, 5%4 es 1, 5%5 es 0. Termina. divisor 5, número 5. Son iguales. Es primo.

    y así hasta el 20.

    Los primos hasta límite de 20 son : 2, 3, 5, 7, 11, 13, 17, 19. 

    • Propuesto como respuesta webJoseModerator domingo, 6 de mayo de 2012 20:07
    • Marcado como respuesta mariovibla domingo, 6 de mayo de 2012 20:47
    domingo, 6 de mayo de 2012 19:53
  • Adicionalmente le comento que Visual Studio tiene un excelente depurador de código con inspección de variables y otra infinidad de beneficios más.  Si usted depura su programa paso a paso, podrá ir examinando cómo trabaja el bucle FOR en el código y cómo van cambiando las variables como 'divisor'.  Esa será la visión más clara que cualquiera pueda darle de cómo funciona el código.

    Jose R. MCP

    domingo, 6 de mayo de 2012 20:08
    Moderador
  • Muchas pero que muchísimas gracias de verdad.

    Ya lo entiendo, ¡eres un jefe!

    Un saludo y muchas gracias de nuevo.

    domingo, 6 de mayo de 2012 20:15