Skip to content

sommen_en_producten

Harry Broeders edited this page Jan 2, 2023 · 3 revisions

De som en het product van opeenvolgende gehele getallen

Op deze pagina zijn een aantal Python programmeeropgaven en uitwerkingen gegeven met betrekking tot het optellen of vermenigvuldigen van een rij opeenvolgende getallen.

Som van opeenvolgende getallen

Schrijf een functie genaamd som_van_getallen die de som S van alle natuurlijke getallen van b tot en met e berekent en teruggeeft. Wiskundig kunnen we dit als volgt noteren:

Deze functie heeft de volgende parameters: beginwaarde en eindwaarde. Deze functie moet als volgt gebruikt kunnen worden:

print(som_van_getallen(1, 9))
print(som_van_getallen(9, 1))
print(som_van_getallen(9, 9))

De juiste uitvoer is dan

45
0
9

Oplossing 1: while-loop

def som_van_getallen(beginwaarde, eindwaarde):
    som = 0
    huidige = beginwaarde
    while huidige <= eindwaarde:
        som = som + huidige
        huidige = huidige + 1
    return som

Oplossing 2: for-loop

Omdat het aantal herhalingen bekend is, kan beter een for-loop gebruikt worden.

def som_van_getallen(beginwaarde, eindwaarde):
    som = 0
    for getal in range(beginwaarde, eindwaarde + 1):
        som = som + getal
    return som

Oplossing 3: zonder herhaling

Bij deze oplossing maken we gebruik van de formule die volgens Rekenkundige rij - Wikipedia vaak aan Gauss wordt toegeschreven:

S = ½(b+e)(e-b+1)

def som_van_getallen(beginwaarde, eindwaarde):
    if (beginwaarde > eindwaarde):
        return 0
    return 1/2 * (beginwaarde + eindwaarde) * (eindwaarde - beginwaarde + 1)

Oplossing 4: recursie

We kunnen de herhaling ook implememteren met behulp van een recusieve functie.

def som_van_getallen(beginwaarde, eindwaarde):
    if beginwaarde > eindwaarde:
        return 0
    return beginwaarde + som_van_getallen(beginwaarde + 1, eindwaarde)

Oplossing 5: rekenkundige rij

Omdat de rij een rekenkundige rij is met beginwaarde b, een verschil van 1 en een aantal van e-b+1 kunnen we ook de functie die de som van een rekenkundige rij berekent en teruggeeft gebruiken. De functie hebben we al eerder geschreven, zie sommen_van_rijen.md.

Product van opeenvolgende getallen

Schrijf een functie genaamd product_van_getallen die het product P van alle natuurlijke getallen van b tot en met e berekent en teruggeeft. Wiskundig kunnen we dit als volgt noteren:

Deze functie heeft de volgende parameters: beginwaarde en eindwaarde. Deze functie moet als volgt gebruikt kunnen worden:

print(product_van_getallen(3, 9))
print(product_van_getallen(9, 3))
print(product_van_getallen(3, 3))

De juiste uitvoer is dan

181440
0
3

Oplossing 1: while-loop

def product_van_getallen(beginwaarde, eindwaarde):
    if (beginwaarde > eindwaarde):
        return 0
    product = 1
    huidige = beginwaarde
    while huidige <= eindwaarde:
        product = product * huidige
        huidige = huidige + 1
    return product

Oplossing 2: for-loop

Omdat het aantal herhalingen bekend is, kan beter een for-loop gebruikt worden.

def product_van_getallen(beginwaarde, eindwaarde):
    if (beginwaarde > eindwaarde):
        return 0
    product = 1
    for getal in range(beginwaarde, eindwaarde + 1):
        product = product * getal
    return product

Oplossing 3: zonder herhaling

Bij deze oplossing maken we gebruik van de formule:

P = e!/(b-1)!

import math    
def product_van_getallen(beginwaarde, eindwaarde):
    if (beginwaarde > eindwaarde):
        return 0
    return math.factorial(eindwaarde) / math.factorial(beginwaarde - 1)

Oplossing 4: recursie

We kunnen de herhaling ook implememteren met behulp van een recusieve functie.

def product_van_getallen(beginwaarde, eindwaarde):
    if beginwaarde > eindwaarde:
        return 0
    if beginwaarde == eindwaarde:
        return beginwaarde
    return beginwaarde * product_van_getallen(beginwaarde + 1, eindwaarde)

Clone this wiki locally