Project Euler es una web donde podemos encontrar muchos desafíos que involucran matemáticas y programación. Se trata de una serie de problemas matemáticos que requieren casi obligatoriamente la creación de un programa para resolverlos. Por ejemplo:
Si el 2 es el primer número primo, el 3 el segundo, el 5 el tercero…encuentra el primo número 10001.
Podemos verlos todos sin necesidad de registrarnos, pero si nos registramos podemos ir sumando puntos conforme vamos resolviendo las cuestiones. Cada uno de los problemas comienza con 20 puntos cuando es propuesto y va bajando de puntuación conforme los usuarios van resolviéndolo. Yo he estado mirando unos cuantos, pero como mi nivel de programación es nulo no he podido hacer mucho. He resuelto uno, el problema número 9 en estos momentos:
Encuentra una terna pitagórica (a,b,c) tal que a+b+c=1000
Ese también lo podéis resolver vosotros. Buscad en este blog y encontraréis la información suficiente.
Y si vais resolviendo problemas podéis usar lo comentarios para informarnos y para dar o pedir ayuda. Seguro que los informáticos del blog estarán encantados.
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
Joás! En 2º de ITIS tuve una asignatura relacionada con esto.. Se llamaba Métodos Numéricos y consistia en implementarlos en C xDD
Me acuerdo aun de alguno como las reglas de Simpson, la del trapecio, regresiones lineales, binomiales… xD
Feliz año y enhorabuena por la página.
Diamond, supongo que te refieres al de la terna pitagórica tal que a+b+c=1000 (no veo los «+» en tu post).
Yo lo he resuelto también sin programar pero he usado una hoja de cálculo despues de haber despejado una variable para buscar cuál era el único entero dándo valores a la otra. a=200, b=375, c=425 ¿Cómo lo has resuelto tu?
¿las ternas pitagóricas no eran las de la forma a² + b² = c² ??
si c = 1000, entonces tendríamos que buscar dos números tales que a² + b² = 1000000
no?
El comentario de Jose me ha despistado :S
ueeee… vale, no, tiene razón, faltan los «+» xD
Joer, porqué no leeré con más atención antes de abrir la boca!!
Hola a todos:
Segun al wikipedia, una terna pitagorica es:
a² + b² = c²
Por lo que en este caso y com odice Mimetist, a² + b² = 1000² … Hallense a y b 🙂
http://es.wikipedia.org/wiki/Terna_pitag%C3%B3rica
En Project Euler piden hasta el primo 10001, y en el post has puesto 100001 🙂 Imagino que ha sido un error tipográfico
Hola Farragut,
El problema que aparece en la página (projecteuler.net) del que hablamos es: Hállese una terna pitagórica (que sí es un a, b y c tal que a^2 + b^2 = c^2) que cumpla que a+b+c=1000.
Esta es: a=200, b=375, c=425.
Ya están puestos los + y arreglado lo del 10001 :).
Sobre lo de las ternas pitagóricas: son ternas (a,b,c) tal que a2+b2=c2. Lo que pide el problema es que encontremos una terna de ese tipo que cumpla que a+b+c=1000. Yo lo resolví usando el post cómo construir triángulos pitagóricos que publiqué hace un tiempo. Echad un ojo.
[…] Lo encontré via Gaussianos. Por Jaime Soffer, 5. January 2007, 06:10 Programación […]
Se parecen a estos otros de la Olimpiada de Computación e Informática 2005
http://mondragon.angeltowns.net/paradiso/OlimpiadaCyM2005.html
Intenté resolver estos con Logo 🙂
Hola, os he descubierto hace poco y lo primero que quiero deciros es gracias por hacer un blog así. Las matemáticas nunca me habían llamado especialmente la atención, pero desde que os leo me ha entrado el gusanillo y no puedo parar. Así que GRACIAS y seguid así. Una de las consecuencias de leeros es que me he puesto a resolver problemas del Project Euler. Resolviendo este problema en concreto he aprendido varias cosas y he recordado otras que tenía olvidadas. Quería compartir mi solución con vosotros porque utilizo un método de construción de ternas pitagóricas distinto (creo) del que… Lee más »
klondike me alegro mucho de que hayamos conseguido despertar en ti el gusanillo de las matemáticas :).
Respecto a tu comentario: me suena haber visto por ahí esa forma de calcular ternas pitagóricas, pero te has confundido. Donde pones par debería poner impar y dodne pone impar debería poner par.
Y otra cosa: pon el código hombre, así lo vemos.
Efectivamente, lo de par-impar está invertido, y no es el único error, también pongo un menos donde debería ir un más, espero no haber liado a nadie con mi descuido. Os pongo el código, este sí está libre de errores y da la respuesta correcta al problema: public void euler9() { int a = 0; int b = 0; int c = 0; int p = 0; int x = 3; do { if (x % 2 != 0) { a = x; b = ((x*x) – 1) / 2; c = ((x*x) + 1) / 2; } else {… Lee más »
Holas, ya se que este comentario lo escribo con retraso pero por si alguien lo lee le agradecería que me respondiera. A raíz de leer gaussianos hace dos semanas empezé a participar en el proyecto euler, y mi pregunta no puede ser más tonta: ¿Cómo pongo el código fuente en los foros de forma que quede dentro de un recuadro como los de todo el mundo?
Enhorabuena por la página.
PD: estoy en el puesto 625, mi nick es zippol.
Juan pues ni idea, yo no he escrito en los foros así que no sé cómo hay que escribirlo.
Cuando lo descubras cuéntanoslo
En esta página se encuentran todos los codigos para poder escribir (hay q estar registrado para entrar)
http://projecteuler.net/index.php?section=faq&ref=forum_html
Para tu pregunta en puntual la caja de codigo se escribe:
[code]Code box[/code]
Buena suerte!
YO quisiera saberla terna de cuarenta
La terna pitagórica entera más pequeña es 3,4,5 y todas las ternas pitagóricas son múltiplos de dicha terna. Esto es, toda terna pitagórica cumple la siguiente condición: 3x,4x,5x donde x es un cualquier número real (o cualquier natural si buscamos ternas enteras) Encontrar la terna que suma 40 es tan sencillo como resolver la ecuación 3x+4x+5x=40 3x+4x+5x = 40 12x = 40 x = 40/12 x = 10/3 = 3,333… Por lo tanto la terna es 3*10/3, 4*10/3, 5*10/3 10, 13,333.., 16,666… Comprobamos que es una terna pitagórica. a²+b²=c² 10² + (40/3)² = (50/3)² 100 + 1600/9 = 2500/9 900/9… Lee más »
Nexus7 no todas las ternas pitagóricas son múltiplos de (3,4,5). Es cierto que toda terna múltiplo de ésa vuelve a ser una terna pitagórica, pero hay muchas más que no se pueden obtener como (3x,4x,5x). Échale un ojo a este post de hace un tiempo:
Cómo construir ternas pitagóricas.
Saludos 🙂
OK. Gracias, ya entendí. Ahora compruebo que yo malinterpreté qué era una «terna pitagórica».
Para mi, que suelo razonar estás cuestiones de forma geométrica, un triángulo pitagórico es el triángulo rectángulo con un seno y un coseno = 0.6 (que su hipotenusa valga 5, 50, 26.57 o pi solo es un convencionalismo llamado escala) Pero veo que yo estaba equivocado y el tema es una cuestión más aritmética que geométrica (un triángulo previamente dibujado será o no será pitagórico dependiendo de la escala que utilicemos)
Hoy ya no me acostaré sin aprender algo nuevo.
esto es mentira!!!!!!!!!!!!
aqui teneis algunos ejemplos mas no múltiples…!!
esas matematicas!!
3 4 5
5 12 13
6 8 10
7 24 25
8 15 17
9 12 15
9 40 41
Muchas gracias, pero eso que dices ya lo señaló Diamond y ya reconocí mi error.
Podemos ponernos a cantar a coro que yo me equivoqué, pero ganaríamos poco con ello. 😀
bourjiñousz lee el comentario anterior como te dice Nexus7. Y de todas formas se puede comentar con otros modos.
Bueno, para el primer problema he usado R (lenguaje y entorno para estadística)
esprimo <- function(num){
comp <- 0
if(num<=2){
return(TRUE)
}
else{
for(i in 2:floor(sqrt(num))){
if(num%%i==0){
comp <- 1
}
}
if(comp==1){
return(FALSE)
}
else{
return(TRUE)
}
}
listaprimos <- function(n){
primos <- c()
i <- 1
while(length(primos)<n){
if(esprimo(i)==TRUE){
primos <- c(primos,i)
}
i <- i+1
}
return(primos)
}
mimi <- listaprimos(10001)
mimi[10001]
(resultado 104743)
Para el segundo problema, uso Haskell. Son dos líneas usando List Comprehensions:
let list = [(a,b,c) | c <- [1..1000], a <- [1..c], b <- [1..a], a^2+b^2==c^2, a+b+c=1000]
head list
(resultado (375,200,425))
Yo he usado project euler en clase, y en talleres para enseñar programación. La verdad es que sabiendo un poco condicionales y bucles ya se puede hacer bastante. Me gusta mucho la presentación de los problemas, ya que normalmente incluyen un ejemplo de lo que piden.
Finalmente decir que hay otras paginas interesantes, como son la olimpiada-informatica.org (concurso a nivel de secundaria y bachillerato y que tiene manuales para aprender), la olimpiada-informatica.cat (simular pero de Cataluña) y finalmente jutge.org (pagina con miles de problemas y juez online).