Autor Tema: C función comprobar si número es primo LenguajeC Ámbito de variables CU00548F  (Leído 5533 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, aquí dejo una posible solución al ejercicio CU00548F del curso de programación en lenguaje C.

Citar
EJERCICIO
Estudia el código que se muestra más abajo y responde a las preguntas

Código: [Seleccionar]
#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
}

Citar
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é?

Comprueba si un número es primo, si lo es, devuelve 0, y sino devuelve 1.
Devolverá 1, porque 4%2 = 0.

Citar
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?

Porque para saber si un número es primo, lo normal es empezar dividiéndolo por el número primo mas pequeño, y este es el 2.
Porque para comprobar los divisores de un número, el primer divisor después de el mismo, no puede ser mayor de la mitad
de dicho número.

Citar
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é?.

No, porque ambas son de ámbito local a la función.
No.
Si, porque ambas tendrían ámbito local a la función en la que estén.

Citar
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 ÁmbitoUtilidad
n1main() 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()
jcheck_prime() servir como índice en el bucle for
flagcheck_prime() almacenar el resultado que devolverá la función check_prime()

Citar
e) Si se introducen como números 11 y 30 ¿Son evaluados 11 y 30? ¿Qué resultado se obtiene? ¿Por qué?

No.
13, 17, 19, 23, 29
Porque se evaluarán los número comprendidos enre i=n1+1 hasta i<n2.


Saludos. ;D
« Última modificación: 08 de Julio 2016, 19:08 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas todo perfecto  :D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".