Ejercicio Un número N es primo si los únicos enteros positivos que lo dividen exactamente son 1 y N Escribe una función que determine si el número N es un número primo Utiliza la función en el programa principal para imprimir los primero 50 números primos Números Primos Determine si el número tiene otro divisor además de 1 y N Realice un ciclo empezando por 2 y terminado en N-1 Si encuentra un número que divide a N entonces el número no es primo i=2 n % i == 0 NO i = i +1 i<=n-1 SI NO Es número primo SI No es primo Recursividad Recursividad es el proceso en el cual una función se llama a si misma en forma repetida hasta satisfacer alguna determinada condición Este proceso se utiliza para calcular procesos que están definidos en términos de si mismos. Ejemplo n!= n ⋅ (n − 1)! F (n ) = F (n − 1) + F (n − 2 ) 0!= 1 F (0 ) = 0, F (1) = 1 Recursividad n!= n ⋅ (n − 1)! 0!= 1 int factorial(int n) { if (n<= 1) return 1; else return(n*factorial(n-1)); } Ejemplo #include <stdio.h> #include <stdlib.h> int factorial(int n); int main(){ int n; Este programa calcula el factorial de un número dado printf(“n = ”); scanf(“%d”,&n); printf(“El factorial de %d es %d”,n,factorial(n)); system("pause"); return 0; } int factorial(int n) { if (n<= 1) return 1; else return(n*factorial(n-1)); } Serie de Fibonacci F (n ) = F (n − 1) + F (n − 2 ) F (0 ) = 0, F (1) = 1 int fibonacci(int n) { if (n = 0) return 0; else if (n = 1)return 1; else return(fibonacci(n-1)+fibonacci(n-2)); } Ejemplo #include <stdio.h> #include <stdlib.h> int fibonacci(int n); Este programa calcula los 15 primeros números de la serie de Fibonacci int main(){ int i; printf(“La 15 primeros números en la serie de Fibonacci son\n”); for(i=0; i<=15; i++) printf(“%d, ”,fibonacci(i)); system("pause"); return 0; } int fibonacci(int n) { if (n = 0) return 0; else if (n = 1)return 1; else return(fibonacci(n-1)+fibonacci(n-2)); } Ejercicio Escriba una función recursiva que calcule la potencia n de un número x dado usando la siguiente formula: x = x⋅x n n x =1 0 Utilice la función para calcular las primera 10 potencias del número Solución Inicio n==0 return 1 n==1 return x return x*xn-1 Fin int potencia(int x, int n) { switch(n){ case 0: return 1; case 1: return x; default: return(x*potencia(x,n-1)); } } Solución Inicio n==0 return x*xn-1 return 1 Fin int potencia(int x, int n) { if(n == 0) return 1; else return(x*potencia(x,n-1)); } Ejemplo #include <stdio.h> #include <stdlib.h> int potencia(int x, int n); Este programa calcula las primeras 10 potencias del número dado int main(){ int i,x; printf(“Proporciona un numero”);scanf(“%d”,&x) printf(“Sus primeras 10 potencias son: ”) for(i=0; i<10; i++) printf(“%d, ”,potencia(x,i)); printf(“\n”) system("pause"); return 0; } int potencia(int x, int n) { if(n == 0)return 1; else return(x*potencia(x,n-1)); } Ejercicio Conversión de decimal a binario 25 ÷2 1 12 ÷2 0 6 ÷2 0 3 ÷2 1 1 ÷2 1 11001 0 Condición de paro parte entera igual a cero Ejercicio Escriba un programa en C que realice la conversión de un número decimal a binario Para realizar la conversión utilice una función recursiva. Solución Inicio n/2 !=0 imprime n%2 Fin convierte n/2 void bin2dec(int n) { if ((n/2) != 0) bin2dec(n/2); printf("%d", n%2); } Ejemplo #include <stdio.h> #include <stdlib.h> int potencia(int x, int n); void bin2dec(int n); Este convierte un número decimal a binario int main() { int n; printf("Proporciona el número a convertir : "); scanf("%d",&n); printf("El número en binario es : "); bin2dec(n); system("pause"); return 0; } void bin2dec(int n) { if ((n/2) != 0) bin2dec(n/2); printf("%d", n%2); } Ejercicio Modifique la función bin2dec de tal forma que pueda convertir un número decimal a binario, octal y hexadecimal. Utilice la función modificada para convertir un número dado en binario, octal y hexadecimal