Diferencia entre revisiones de «2010 Ejercicio 5: Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos»
De Software Libre para la Enseñanza y el Aprendizaje de las Matemáticas (2010-11)
(→Solución 2 (en Groovy)) |
m (Ejercicio 5: Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos trasladada a 2010 Ejercicio 5: Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos) |
||
(No se muestran 2 ediciones intermedias de otro usuario) | |||
Línea 49: | Línea 49: | ||
println(primo) | println(primo) | ||
+ | == Solución 3 (en wxMaxima 0.84) == | ||
+ | |||
+ | Otra solución usando Máxima es: | ||
+ | |||
+ | (i%1) a:1$ | ||
+ | cont:0$ | ||
+ | for i:1 step a while cont<10001 do ( | ||
+ | a:next_prime(a),cont:cont+1,if(cont=10001)then(print("El nº primo de la posición 10001 es",a)) | ||
+ | )$; | ||
+ | |||
+ | (o%1) "El nº primo de la posición 10001 es"104743 resuelto por[[Usuario:Rafatelo|Rafatelo]] |
Revisión actual del 10:55 8 mar 2011
Inserte aquí texto sin formatoInserte aquí texto sin formato== Enunciado == Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos.
Solución 1 (en wxMaxima 0.84)
Una solución usando el lenguaje de cálculo simbólico Máxima es:
(i%1) cont: 0$ for i: 1 step 1 while cont<10001 do ( if (primep(i) = true) then( cont: cont+1), if (cont = 10001) then( print("El Número primo en la posición 10001 es: ",i)) );
(o%1) El Número primo en la posición 10001 es: 104743 done
Solución 2 (en Groovy)
A igual que mis compañeros en otros ejercicios, voy a utilizar el lenguaje de programación Groovy. Se puede probar el script en la página http://groovyconsole.appspot.com/
Solución: 104743
def es_primo(int num) {
if( num == 1 ) return false; else if( num < 4 ) return true; int m = (int) Math.sqrt(num); for (int i = 2; i <= m; i++) { if (num % i == 0) return false; }
return true; }
def numero=1 def primo =1 while(numero < 10001){
if(es_primo(primo)){ numero = numero +1; }
primo = primo +1; }
println(primo)
Solución 3 (en wxMaxima 0.84)
Otra solución usando Máxima es:
(i%1) a:1$ cont:0$ for i:1 step a while cont<10001 do ( a:next_prime(a),cont:cont+1,if(cont=10001)then(print("El nº primo de la posición 10001 es",a)) )$;
(o%1) "El nº primo de la posición 10001 es"104743 resuelto porRafatelo