¿Qué hay de malo con las etiquetas amarillas? ¿Por qué el resultado es extraño? ¿Qué pasa con el código?
Quieres encontrar números primos y números primos entre 2 y 100, ¿verdad? Haz algunas preguntas.
1. En la línea amarilla, escribiste for(j = 2; j lt= m; J), pero el tipo de m es doble. Debes saber que en la computadora, el tipo doble causará errores, es decir, si M es 3, en realidad puede ser 2.99999 o 3.000001. Luego úsalo para comparar el tamaño con J (un número entero). y el bucle de control Algo salió mal. Se recomienda cambiar el tipo de m a int y luego cambiar m=sqrt(i) a m=round(sqrt(i)), donde round es la función de redondeo.
2. En las siguientes dos líneas en amarillo, if(I j = = 0)t = 1 ahí, deben estar anidadas entre llaves, es decir, if(I j = = 0) { t = 1; break;}; de lo contrario, se producirá un resultado extraño, puedes pensar por qué.
3. ¿No hay ningún valor de salida k al final? ¿No hay salida o lo olvidas?
Todo lo demás debería estar bien. Pregúntame si tengo razón.
Código:
# include ltcstdio gt
# include ltmath.h gt
int? principal(){
int? I, j, k=0, t=0, m;
for(I = 2; ilt=100;i){
t = 0;
m = round(sqrt(I));
for(j = 2; j lt= m; j ){
if(ij==0){< / p>
t = 1;
Romper
}
}
if(t==0){
printf("5d ",I);
k;
Si (k5==0)
printf(" \ n ");
}
}
¿Volver? 0;
}