In opdracht 3 van de vorige les probeerden we decryptiefuncties te vinden bij encryptiefuncties als
en
. Het doel van deze les is om een snellere manier te vinden om deze decryptiefuncties te bepalen. Hiervoor gaan we het algoritme van Euclides gebruiken. Dit is in eerste instantie een algoritme om de grootst gemene deler te bepalen, maar we gaan zien dat die ook voor andere vraagstukken nuttig is.
Delers
We beginnen met het begrip deler. We zeggen dat
een deler is van
als
een geheel getal is.
Opdracht 1:
a) Is 5 een deler van 45?
b) Is 45 een deler van 5?
c) Is 17 een deler van 17?
d) Is 1 een deler van 3?
e) Is 12 een deler van 0?
f) Is 0 een deler van 12?
Uitwerking:
a) Ja, want
en dat is geheel.
b) Nee, want
is niet geheel.
c) Ja, want
en dat is geheel.
d) Ja, want
en dat is geheel.
e) Ja, want
en dat is geheel.
f) nee, want
kan niet.
Opdracht 2: (Bron: Project Euler probleem 1)
De lijst van alle positieve gehele getallen onder de 10 die veelvouden van 3 of 5 zijn, zijn 3, 5, 6 en 9. Deze getallen hebben een som van 23. Schrijf in Python een programma die de som van alle positieve gehele getallen onder de 1000 vindt die een veelvoud van 3 of 5 zijn.
Uitwerking:
In Python kunnen we met
controleren of
een deler is van
. Het onderstaande programma test dus voor ieder getal onder de 1000 of die een deler is van
of
en als dat het geval is, wordt die bij de uitkomst opgeteld.
som = 0
for n in range(1,1000):
if n % 3 == 0 or n % 5 == 0:
som += n
print(som)
Het antwoord is dan 233168.