[Python-es] suma de multiplos de 3 y 5

Chema Cortes pych3m4 en gmail.com
Mar Sep 4 06:33:08 EDT 2018


El lun., 3 sept. 2018 a las 21:12, AGTUGO (<agtugo en gmail.com>) escribió:

> """
> Problema tomado de
> https://projecteuler.net/problem=1
>
>
> 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.
>
> Si listamos todos los numeros naturales menores a 10 que son
> múltiplos de 3 o 5 obtenemos 2, 5, 6 y 9. La suma de los múltiplos es 23.
> Encuentra la suma de los múltiplos de 3 o 5 menores de 1000.
>
>
> """
>
> """
> Este es mi aporte de código no esta diseñado para ser eficiente,
> el objetivo es jugar con el lenguaje. Ojalá puedan compartir
> una visión interesante de como resolver este problema.
> Si tienen una forma más eficiente de hacer el set o más elegante también
> es bienvenido.
> Saludos.
> """
>
> import itertools
> begin = 0
> end = 1000
> multiples= (3,5)
>
> x = [range(begin,end,i) for i in multiples]
> x = sum(set(itertools.chain(*x)))
>
> print(x)
>
>
Con este tipo de retos, es interesante que sea lo más simple posible. En el
enunciado sólo pide la suma, no es preciso guardar ninguno de los
resultados intermedios.

Lo más simple sería:

def euler001(n: int) -> int:
    return sum(i for i in range(1, n) if i%3 == 0 or i%5 ==0)

... que es una forma concisa de poner lo que propone agus en otro mensaje.

Una forma más efectiva, aunque muy poco "escalable" en caso de que fueran
más múltiplos a considerar:

def euler001(n: int) -> int:
    return sum(range(3, n, 3)) + sum(range(5, n, 5)) - sum(range(15, n, 15))


-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
https://blog.ch3m4.org
Buscador Python Hispano: http://busca.ch3m4.org
<https://blog.ch3m4.org/pages/busqueda-python-es/>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20180904/0119d57c/attachment.html>


Más información sobre la lista de distribución Python-es