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 Groovy))
 
(No se muestran 5 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.
 
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) ==
 
== 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 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