Triton Posted May 16, 2006 at 12:04 PM Report Share #27674 Posted May 16, 2006 at 12:04 PM Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems. Bem, como só conheço 4 portugueses neste projecto, decidi deixar o desafio. Vou lançando soluções para os desafios á medida que os for conseguindo acabar, só mesmo para aqueles que tenham dúvidas, ou seja, para não ficarem encravados em certos pormenores estúpidos como eu fiquei. 😛 :P Comecei por usar C#, mas depois mudei para Python. Link: http://mathschallenge.net/index.php?section=project Soluções: # Problem 1 sum = 0 for i in range(1,1000): if i % 3 == 0 or i % 5 == 0: sum = sum + i print sum # Problem 2 const int limit = 1000000; int previous = 1; int sum = 0; int result = 1; int x = 0; for (int i = 1; i <= limit; i += previous) { if(x>0)previous = i - previous; x++; if (i % 2 == 0)sum += i; } Neste momento já tenho resolvidos até ao 15, se quiserem que continue a postar as soluções digam. Não quero ser muito spoiler! 🙂 <3 life Link to comment Share on other sites More sharing options...
deathseeker25 Posted May 16, 2006 at 02:11 PM Report Share #27687 Posted May 16, 2006 at 02:11 PM Parece-me fantástico. Vou-me inscrever. 😛 Link to comment Share on other sites More sharing options...
deathseeker25 Posted May 16, 2006 at 06:17 PM Report Share #27720 Posted May 16, 2006 at 06:17 PM Como já tinham apresentado a solução em Python, eu apresento a minha em C: Problema 1: #include <stdio.h> #include <stdlib.h> main() { int i; int soma=0; for(i=0;i<1000;i++) { if(i%3==0 || i%5==0) { soma=soma+i; printf("%d \n",soma); } } system("PAUSE"); } Link to comment Share on other sites More sharing options...
brink@ero Posted May 16, 2006 at 08:20 PM Report Share #27748 Posted May 16, 2006 at 08:20 PM Parece-me fantástico, mas agora não tenho tempo para estar a ver os problemas :buck2:. Tenho muita pena 😛 Sendo este tópico de Algoritmia e Lógica, deve ser acessível a todos os programadores. Para isso devia-se apresentar um código universal, ou seja, pseudocódigo. Assim, qualquer programador pode analizar as vossas soluções (independentemente da linguagem que utilizem) 😛 . Ficou aqui a minha sugestão. Cumpr. brink@ero ? Link to comment Share on other sites More sharing options...
Triton Posted May 17, 2006 at 09:51 AM Author Report Share #27798 Posted May 17, 2006 at 09:51 AM Podes dar o exemplo do problema 1 em pseudo código? ? Não tou a ver como faço para pôr as soluções dos problemas sem ser numa linguagem específica. <3 life Link to comment Share on other sites More sharing options...
untouchables Posted May 17, 2006 at 09:58 AM Report Share #27799 Posted May 17, 2006 at 09:58 AM ripzone ja tens ai 2 codigos para o problema 1. para que linguagem procuras? Link to comment Share on other sites More sharing options...
brink@ero Posted May 17, 2006 at 10:20 AM Report Share #27803 Posted May 17, 2006 at 10:20 AM Podes dar o exemplo do problema 1 em pseudo código? ? Não tou a ver como faço para pôr as soluções dos problemas sem ser numa linguagem específica. Depois de fazer o programa, poes o o pseudocódigo como anexo para todos entederem. ripzone ja tens ai 2 codigos para o problema 1. para que linguagem procuras? Por acaso percebo de C, mas nem toda a gente sabe C ou Python. Sendo impossível estar a resolver o problema em todas as linguagens. Eu acho útil ter o pseudocódigo, principalmente nesta secção que é destinada à todos os programadores e à todas as linguagens de programação. Por exemplo, o código do deathseeker25: #include <stdio.h> #include <stdlib.h> main() { int i; int soma=0; for(i=0;i<1000;i++) { if(i%3==0 || i%5==0) { soma=soma+i; printf("%d \n",soma); } } system("PAUSE"); } Pseudocódigo: Inicializar a variável soma a 0 Ciclo de i com o valor inicial 0, de 1 à 1 até ao valor 999 Se o resto da divisão inteira de i por 3 ou i por 5 ser igual a 0 Então Adiciona o valor da variável i na variável soma Escreve o valor da variável soma Fim do se Fim do ciclo com a variável i Escreve "Prima qualquer tecla para continuar..." Espera que o utilizador pressione uma tecla Isto é um exemplo. Cumpr. brink@ero 😛 Link to comment Share on other sites More sharing options...
Triton Posted May 17, 2006 at 05:09 PM Author Report Share #27879 Posted May 17, 2006 at 05:09 PM Obrigado pela explicação! 😛 <3 life Link to comment Share on other sites More sharing options...
saramgsilva Posted May 17, 2006 at 06:42 PM Report Share #27912 Posted May 17, 2006 at 06:42 PM O problema que estão a resolver é muito simples.... curti muito este problema Problem 7By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10001st prime number? tenho um programa feito em C + MPI ( computaçãao paralela.... ) vou correr isso no departamento para descobrir o numero primo na 10001st...se conseguir la chegar... 👍 se não mandar os pc's a baixo... 😄 p.s como o site está em ingles, tenho muitas dificuldades em perceber o objectivo... percebi mais ao menos... 😛 disseram que existiam 4 portugueses neste projecto.... alguem me pode dizer quem são...como os contactar... ou assim... para saber de mais coisas? andei a ver mas nao encontrei nada 😄 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
Warrior Posted May 17, 2006 at 07:00 PM Report Share #27922 Posted May 17, 2006 at 07:00 PM Ele queria dizer que existiam 4 portugueses inscritos. (suponho eu, visto agora serem 7) Do lado esquerdo, carrega em statistics, e podes ver todos os portugueses que estão a participar. Link to comment Share on other sites More sharing options...
Triton Posted May 17, 2006 at 08:38 PM Author Report Share #27933 Posted May 17, 2006 at 08:38 PM Não precisas de nada disso para resolver o problema 7. Eu com 2 dias de C# consegui resolver. 👍 Hint: http://pt.wikipedia.org/wiki/Erat%C3%B3stenes#O_Crivo_de_Erat.C3.B3stenes Salvo erro tens uma implementação desse algoritmo neste forúm. Caso tenhas algúma dúvida diz! 😛 <3 life Link to comment Share on other sites More sharing options...
UnKnowN Posted May 17, 2006 at 08:42 PM Report Share #27935 Posted May 17, 2006 at 08:42 PM Não precisas de nada disso para resolver o problema 7. Eu com 2 dias de C# consegui resolver. 👍 Hint: http://pt.wikipedia.org/wiki/Erat%C3%B3stenes#O_Crivo_de_Erat.C3.B3stenes Salvo erro tens uma implementação desse algoritmo neste forúm. Caso tenhas algúma dúvida diz! 😛 Hmm nao percebi :\ Link to comment Share on other sites More sharing options...
Triton Posted May 17, 2006 at 09:11 PM Author Report Share #27941 Posted May 17, 2006 at 09:11 PM Que parte é que não percebeste? Quem tiver dúvida diga, que talvez possa ajudar. 👍 <3 life Link to comment Share on other sites More sharing options...
mogers Posted May 17, 2006 at 09:25 PM Report Share #27945 Posted May 17, 2006 at 09:25 PM O problema que estão a resolver é muito simples.... curti muito este problema Problem 7By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10001st prime number? tenho um programa feito em C + MPI ( computaçãao paralela.... ) vou correr isso no departamento para descobrir o numero primo na 10001st...se conseguir la chegar... 👍 se não mandar os pc's a baixo... 😄 p.s como o site está em ingles, tenho muitas dificuldades em perceber o objectivo... percebi mais ao menos... 😛 disseram que existiam 4 portugueses neste projecto.... alguem me pode dizer quem são...como os contactar... ou assim... para saber de mais coisas? andei a ver mas nao encontrei nada 😄 Exercícios deste género são relativamente simples de resolver com o Crivo de Erastotenes, tal como ripzone sugeriu... http://www.portugal-a-programar.pt/index.php?showtopic=1743 Infelizmente tb nao tenho tempo para ir ao site, mas pelo codigo do deathseeker25, suponho que as soluções não são submetidas a um corrector automático certo? ( digo isto por causa do system("pause").. daria time limit exceeded). Espero pa semana poder dar uma olhadela, tb gosto mt destes desafios "What we do for ourselves dies with us. What we do for others and the world, remains and is immortal.", Albert Pine Blog pessoal : contém alguns puzzles, algoritmos e problemas para se resolver com programação. Link to comment Share on other sites More sharing options...
Triton Posted May 17, 2006 at 09:35 PM Author Report Share #27948 Posted May 17, 2006 at 09:35 PM Para validar as soluções é preciso enviar a resposta certa. Mas aqui a partir do 20 começa a ser muito puxado. <3 life Link to comment Share on other sites More sharing options...
saramgsilva Posted May 18, 2006 at 10:12 AM Report Share #28017 Posted May 18, 2006 at 10:12 AM o Crivo de Erastotenes é muito util para encontrar os numeros primos.... 😄 o programa que tenho usa isso 😛 UnKnowN não percebeste o que? para ajudar a resolver isto: Problem 7By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. What is the 10001st prime number? será util usar : Crivo de Erastotenes 👍 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
UnKnowN Posted May 18, 2006 at 12:58 PM Report Share #28043 Posted May 18, 2006 at 12:58 PM Eu nao percebi a "lógica" ou "essência" como lhe kiserem xamar, do Crivo de Erastotenes PS: Já me registei e acho o site mesmo MT BOM! grande post ripzone 👍 Link to comment Share on other sites More sharing options...
saramgsilva Posted May 18, 2006 at 01:36 PM Report Share #28047 Posted May 18, 2006 at 01:36 PM Parece-me fantástico. Vou-me inscrever. 👍 ja me registei...mas nao me inscrevi.... pelo que vi isso nao tem limite de tempo... existem os problemas e toca a resolver né? e depois so tens que apresentar a solução... e ganhas pontos por cada resposta consoante o tipo de pergunta e o grau de dificuldade.... hummmm ? EDIT Criei um post a falar nos Crivo de Eratosthenes na secção de matemática : Aqui www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5 Link to comment Share on other sites More sharing options...
UnKnowN Posted May 18, 2006 at 04:57 PM Report Share #28101 Posted May 18, 2006 at 04:57 PM # Problem 1 sum = 0 for i in range(1,1000): if i % 3 == 0 or i % 5 == 0: sum = sum + i print sum Podes explicar.me porque é que primeiro temos de dar o valor 0 ao sum ? porque é que nao pode ser >>> for i in range(1,1001): if i % 3 == 0 or i % 5 == 0: i = i + i print i Desde de já agradeço 👍 Link to comment Share on other sites More sharing options...
Triton Posted May 18, 2006 at 05:24 PM Author Report Share #28106 Posted May 18, 2006 at 05:24 PM É assim, tens vários erros no teu código. 1º - No Python as linhas são identificadas pelo espaços em relação ás outras (identation) 2º - Estás a usar a variável do loop for i para juntar números, pois em cada iteração ela é mudada para valores de 1 a 1000. 3º - Também acho que não queres fazer print ao i em cada ciclo for, logo deves por o print mais atrás. Eu dei valor 0 ao sum para iniciar a variavél. Nota: i = i + i pode ser simplemente i += i . b = 0 # inicializa a variável for i in range(1,1001): if i % 3 == 0 or i % 5 == 0: b += i # adiciona i ao b print b # mostra o valor final do b <3 life Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now