
Multiples of 3 or 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$.
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$.
Formalmente, vorremo trovare
Quindi l'idea è che possiamo calcolare questa somma raccogliendo tutti i fattori di 3 e 5, ottenendo , con e i limiti opportuni per ottenere un loro multiplo senza sforare 1000, quindi e . In questo modo però staremmo contando due volte i multipli di 3 e 5, come 15, 30, 45, ecc; quindi occorre correggere il calcolo sottraendo per i multipli di 15, ovvero , dove il limite ora corrisponde a 66 (dato che mentre ). Dopodiché, si può calcolare applicando sulle varie somme la formuletta
Questo esercizio si può quindi risolvere tranquillamente su carta, e questa sarebbe la sua formulazione equivalente in codice
sum_to_n(n) = n*(n+1)/2 # o anche solo sum(collect(1:n))
S = 3*sum_to_n(333) + 5*sum_to_n(199) - 15*sum_to_n(66)
233168.0
ma comunque ci si può ovviamente arrivare anche con approcci puramente informatici:
# one-liner
sum([i for i in 1:999 if (i%3==0 || i%5==0)])
233168
# simulazione estesa
S = 0
for i in 1:999
if i%3 == 0 || i%5 == 0
global S += i
end
end
@show S
S = 233168