terça-feira, 10 de fevereiro de 2015

Problema 5: Menor Multiplo

Problema: Smallest multiple

"2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest positive number that is evenly divisible by all of numbers from 1 to 20?"
- - - - - - - -
"2520 é o menor número que pode ser dividido por cada um dos números de 1 a 10, sem nenhum resto.
Qual é o menor número positivo que é divisível por todos os números de 1 a 20?"

Solução:

Basta fazer calcular o minimo multiplo comum de todos os números entre 1 e 21.

Código:    p005.py
Resposta: 232792560

Problema 4: Maior palindromo

Problema: Largest palindrome product

"A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 x 99.
Find the largest palindrome made from the product of two 3-digit numbers."
- - - - - - - -
"Um número palíndromo é o mesmo quando lido em qualquer sentido (da direita para esquerda, ou da esquerda para a direita). O maior palíndromo feito a partir do produto de dois números de dois algarismos é 9009 = 91 x 99.
Encontre o maior palindromo feito a partir do produto de dois números de 3 algarismos."

Solução:

  1. Multiplicar dois números de 3 algarismos;
  2. Verificar se (1) é palíndromo;
  3. Fazer isso para todas as demais combinações de números de 3 algarismos, armazenando sempre o maior resultado

Código:    p004.py
Resposta: 906609

Problema 3: Maior fator primo

Problema: Largest prime factor

"The prime factors of 13.195 are 5, 7, 13 and 29.
Wha is the largest prime factor of the number 600.851.475.143?"
- - - - - - - -
"Os fatores primos de 13.195 são 5, 7, 13 e 29
Qual é o maior fator primo do número 600.851.475.143?"

Solução:
Para resolver o problema basta fatorar o número 600.851.475.143








Código:    p003.py
Resposta: 6857

Problema 2: Números de Fibonacci pares

Problema: Even Fibonacci numbers

"Each new term in Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million, find the sum of the even-valued terms."
- - - - - - - -
"Cada novo termo na sequência de Fibonacci é gerado pela soma dos dois termos anteriores. Ao iniciar com 1 e 2, os primeiros 10 termos são:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Considerando os termos da sequência de Fibonacci cujos valores não ultrapassem quatro milhões, encontre a soma dos termos pares."

Solução:
  1. Encontrar todos os termos da sequencia de Fibonacci que sejam menores que 4 milhões;
  2. Somar aqueles que forem 'par';
Código:    p002.py
Resposta: 4613732

Problema 1: Múltiplos de 3 e 5.

Problema: Multiples of 3 and 5

"If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000."
- - - - - - - -
"Se listarmos todos os números naturais menores que 10 e que são múltiplos de 3 ou 5, obtemos 3, 5, 6 e 9. A soma desses múltiplos é de 23.
Encontre a soma de todos os múltiplos de 3 ou 5 menores que 1000."

Solução:
  1. Encontrar a soma dos múltiplos de 3 que são menores que 1000;
  2. Fazer o mesmo com os múltiplos de 5;
  3. Fazer o mesmo com os múltiplos de (3*5 = 15);
  4. Somar (1) e (2) e subtrair (3), de modo a evitar contar duas vezes os números que são ao mesmo tempo múltiplos de 3 e de 5.
Código:    p001.py
Resposta: 233168



segunda-feira, 9 de fevereiro de 2015

Project Euler



O Project Euler é um site com pequenos desafios de programação que envolvem conhecimentos matemáticos... Atualmente são 502 problemas, passando pelos mais variados níveis de dificuldade, conhecimentos de lógica de programação e "macetes" matemáticos.

O processo é bem simples:
  1. Você se cadastra no site https://projecteuler.net/.
  2. Escolhe um dos problemas.
  3. Cria um código para calcular a resposta do problema.
  4. Envia a resposta e o site te diz se você acertou ou não.

Entediado de dormir nas férias, resolvi resolver alguns por diversão e para ampliar meus conhecimentos de matemática e programação. Estou resolvendo-os em Python, mas você pode usar qualquer linguagem.

Criei este para deixar minhas soluções a disposição do público e de outros entusiastas para que possam aprender e criticar.

Pretendo "postar" 2 soluções por semana, todos os códigos estarão disponíveis no meu repositório do GitHub.

Repositório no GitHub.