Project Euler #1 - Multiplos de 3 o 5

Solución al primer problema de Project Euler, encontrando la suma de todos los múltiplos de 3 o 5 menores a 1000, implementado en Go y Python.

cover
Ilustración por @nicol.s.art

Multiplos de 3 o 5

Si enumeramos todos los números naturales menores a 10 que son múltiplos de 3 o 5, obtenemos 3, 5, 6 y 9. La suma de estos múltiplos es 23.

El objetivo es encontrar la suma de todos los múltiplos de 3 o 5 menores a 1000.

Solución en Go

Para resolver este problema en Go, se utiliza una función CalculateMultiples que toma un límite como argumento y retorna la suma de todos los múltiplos de 3 o 5 menores a ese límite. Aquí está el código:

package exercises

func CalculateMultiples(limit int) int {
	var sum int
	for i := 1; i < limit; i++ {
		if i % 3 == 0 || i % 5 == 0 {
			sum = sum + i
		}
	}
	return sum
}
  • Se define una función CalculateMultiples que toma un entero limit como parámetro.
  • Se inicializa una variable sum en cero para almacenar la suma de los múltiplos.
  • Se utiliza un bucle for para recorrer todos los números desde 1 hasta limit - 1.
  • Dentro del bucle, se verifica si el número actual es múltiplo de 3 o 5 utilizando el operador módulo (%).
  • Si el número es múltiplo de 3 o 5, se añade a sum.
  • Finalmente, se retorna el valor de sum.

Solución en Python

Para resolver el mismo problema en Python, se crea una función sumDiv que utiliza una comprensión de lista para sumar todos los múltiplos de 3 o 5 menores a un límite dado. Aquí está el código:

import time

def sumDiv(n):
   return sum([i for i in range(1, n) if i % 5 == 0 or i % 3 == 0])

if __name__ == "__main__":
   print(sumDiv(1000))
  • Se define una función sumDiv que toma un entero n como parámetro.
  • Se utiliza una comprensión de lista para generar una lista de números desde 1 hasta n - 1 que sean múltiplos de 3 o 5.
  • La función sum se utiliza para sumar todos los elementos de la lista generada.
  • En el bloque if __name__ == "__main__":, se llama a sumDiv con el valor 1000 y se imprime el resultado.