primos del 1 al 100

condesitadeirun
28 de Noviembre del 2005
Hola, tengo un problema con este programa, necesito que me imprima los numeros primos que haya del 1 al 100 no se en que punto se jodio el programa
Besos
Gracias
Juncal
/*Programa primos del 1 al 100*/
#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int n,cont,cont1,res,sw;
n=2;
cont1=2;
res=0;
do
{
cont=2;
sw=0;
do
{
res=n%cont;
if(res==0)
sw=1;
else
cont=cont+1;
}
while(cont<n);
if(sw==0)
printf("%i",n);
else
n=n+1;
}
while(n<100);
getch();
}

kike
28 de Noviembre del 2005
El problema esta en los aumentos de cont en el primer bucle y n en el segundo, los has puesto dentro de la sentencia else y eso provoca
en el primer caso:
cuando contador es menor que n y res==0 pone el valor de sw en 1 y salta el aumento de cont(else), con lo cual el programa se queda dando vueltas con el mismo valor de cont.
en el segundo caso:
como sw es 0 (es un numero primo) lo muestra pero salta el aumento de n, con lo cual imprime n para siempre.
En resumen has incluido dos circulos viciosos, si eliminas los dos else veras como todo deberia ir bien.

El programa se puede simplificar en dos bucles for anidados, por ejemplo este codigo hace lo mismo

main()
{
for(int x=2;x<100;x++){
int a=0;
for(int y=2;y<x;y++){
if(!(x%y))
a=1;
}
if(!a)
printf("%dn",x);
}
getch();
}


condesitadeirun
28 de Noviembre del 2005
Gracias, sois la leche
Besos
Juncal