Función booleana esPrimo de manera recursiva?

Función booleana esPrimo de manera recursiva?

de Florencia Roque Justo -
Número de respuestas: 2

Buenas, tengo una duda medio general. Lo he estado pensando pero no me sale. Mi duda es si es posible implementar de manera recursiva una función que me determine si un número es primo o no. Desde ya, muchas gracias

En respuesta a Florencia Roque Justo

Re: Función booleana esPrimo de manera recursiva?

de Fernando Fernandez -

Podría ser con una función auxiliar tieneDivisores(i.n), 2 <= i < n, que devuelve true si y solo si en el rango 2 ... i hay algún divisor de n.

tieneDivisores (2, n) -> n%2 == 0

para i > 2

tieneDivisores(i,n) -> tieneDivisores(i-1, n) || (n % i == 0)

Esta función es recursiva.

Y entonces

esPrimo(n) -> ! tieneDivisores(raiz(n), n)

No digo que sea muy eficiente. 

En respuesta a Florencia Roque Justo

Re: Función booleana esPrimo de manera recursiva?

de Mario Andres Ibañez Grajales -
Podría ser una recursión que se va pasando una lista de primos, arrancas con 2,3, y 5 ponele, si ninguno de los tres lo dividie ese numero es primo y lo agregas a la lista y así vas avanzando hasta el numero x que queres. Podes ya determinar que es primo en el mayor a raiz de x. Si es primo lo agregas a la lista y después consulta si esta en la lista.