Acciones

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 1 (en wxMaxima 0.84))
 
(No se muestran 4 ediciones intermedias de 2 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.
 
Buscar el número primo que ocupa la posición 10001 en la secuencia de números primos.
  
Línea 17: Línea 17:
 
   (o%1)  El Número primo en la posición 10001 es: 104743
 
   (o%1)  El Número primo en la posición 10001 es: 104743
 
         done
 
         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