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)
(Página creada con '== Enunciado == Sumar los enteros menores de 1000 que sean múltiplos de 3 ó 5. == Solución 1 (en Groovy) == La solución que propongo está escrita en lenguaje Groovy. Este …') |
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 7 ediciones intermedias de 3 usuarios) | |||
Línea 1: | Línea 1: | ||
− | == Enunciado == | + | <nowiki>Inserte aquí texto sin formato</nowiki><nowiki>Inserte aquí texto sin formato</nowiki>== Enunciado == |
− | + | Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos. | |
− | == Solución 1 (en | + | == 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)) | ||
+ | ); | ||
− | def | + | (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 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