Principales respuestas
Ayuda programa en C no se cómo actúa, muchas gracias!

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!
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
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.
- Propuesto como respuesta webJoseModerator domingo, 6 de mayo de 2012 20:07
-
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
-
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
-
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
-