Jump to content

Math's & Programming Challenges (Project Euler)


Triton

Recommended Posts

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

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

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

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

O problema que estão a resolver é muito simples....

curti muito este problema

Problem 7

By 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  😄

Link to comment
Share on other sites

O problema que estão a resolver é muito simples....

curti muito este problema

Problem 7

By 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

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 7

By 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  👍

Link to comment
Share on other sites

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

Link to comment
Share on other sites

# 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

É 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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.