EJERCICIO
Estudia el código que se muestra más abajo y responde a las preguntas
#include <stdio.h>
#include <stdlib.h>
int check_prime(int num);
int main(){
int n1,n2,i,flag;
printf("Enter two numbers(intervals): ");
scanf("%d %d",&n1, &n2);
printf("Prime numbers between %d and %d are: ", n1, n2);
for(i=n1+1;i<n2;++i)
{
flag=check_prime(i);
if(flag==0)
printf("%d ",i);
}
return 0;
}
int check_prime(int num) {
int j,flag=0;
for(j=2;j<=num/2;++j){
if(num%j==0){
flag=1;
break;
}
}
return flag; // Ejercicios aprenderaprogramar.com
}a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve la función check_prime? ¿Qué resultado devolverá si le pasamos el número 4? ¿Por qué?
b) En dicha función se usa la siguiente definición de bucle: for(j=2;j<=num/2;++j) ¿Por qué crees que el bucle tiene un valor inicial 2? ¿Por qué crees que el bucle tiene un valor final num/2?
c) ¿La variable flag que se usa en el main es la misma que se usa en la función check_prime? ¿Es posible declarar y usar dos variables con el mismo nombre en la función main? ¿Y declarar y usar dos variables con el mismo nombre en la función main y otra función? ¿Por qué?.
d) Crea una tabla de variables del programa que conste de las siguientes columnas: nombre de variable, ámbito, utilidad. Por ejemplo la variable i tiene nombre de variable i, ámbito la función main, y utilidad servir como índice en el bucle for del main.
| Nombre variable | Ámbito | Utilidad |
| n1 | main() | tendrá el valor del primer número |
| n2 | main() | tendrá el valor del segundo número |
| i | main() | servir como índice en el bucle for del main() |
| flag | main() | almacenar el valor que devuelve la función check_prime() |
| j | check_prime() | servir como índice en el bucle for |
| flag | check_prime() | almacenar el resultado que devolverá la función check_prime() |
e) Si se introducen como números 11 y 30 ¿Son evaluados 11 y 30? ¿Qué resultado se obtiene? ¿Por qué?