Progetto Eulero: Problema 001

In questi articoli cercherò di illustrarvi gli algoritmi risolutivi del Progetto Eulero a scopo didattico e di guida nel caso di problemi particolarmente ostici.

Il problema 1 del Progetto Eulero recita più o meno cosi:

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.

Bene. Il primo problema, in quanto primo è molto semplice. Dobbiamo trovare tutti i numeri minori di mille tali che siano divisibili interamente da 3 o da 5 e sommarli insieme. In Python l’algoritmo risolutivo ha più o meno questa forma.

target=1000
sum=0
for i in range(1,target)
if (i % 3==0) or (i % 5)==0 :
sum+=i
print sum

Incollatelo in un file .py ed eseguitelo col classico “python nomefile.py“.

Le prime due righe sono chiaramente assegnazioni di variabili. In Python non è necessario dichiarare ne il tipo della variabile ne la variabile stessa, un po come succede nel PHP.

Il ciclo for è invece decisamente interessante. Per chi conosce il Java, il costrutto for di Python ricorda molto il costrutto for…each.
In pratica la variabile i assumerà il ruolo di iteratore nella lista passata dopo in, assumerà cioè il valore di ogni elemento della lista.

La lista nel nostro caso è la lista generata da range(1,target). range(x,y) genererà una lista di interi che va da x a y-1. Per esempio range(3,8) restituirà [3,4,5,6,7].

In range è possibile anche definire il “passo”. Per esempio range(3,2,8) restituirà [3,5,7]. Come si vede va da 3 a 7 con il passo di 2.

L’ if invece è simile a molti altri linguaggi di programmazione e nel nostro caso controlla se il resto della divisione fra il numero in esame e 3 o 5 sia zero. Se affermativo il numero viene sommato.

Comments are closed.