Vul de coëfficiënten van de lineaire diofantische vergelijking ax + by = c in. De vergelijking hieronder is gekoppeld aan de invoervelden, dus je kunt de getallen er ook rechtstreeks in aanpassen. Verander “Gewenste oplossingen” om alleen de positieve geheeltallige oplossingen te bewaren.
Inhoudsopgave
-
Wat je op deze pagina kunt doen
-
Waarvoor is deze berekening handig?
-
Zo werkt het
-
Formules en grafieken
-
Symbolen en begrippen
-
Handig om vooraf te weten
-
Berekenen met Excel
-
Berekenen met Google Spreadsheets
-
Berekenen met Python
-
De formule in LaTeX en andere wiskundenotaties (om te kopiëren)
-
Zo laat je ChatGPT de berekening doen
-
Kenmerken van DataChef
-
Gerelateerde functies
-
Alle rekenmachines van NumberChef
Wat je op deze pagina kunt doen
- Vul de gehele coëfficiënten \(a,\ b,\ c\) in en je krijgt de paren gehele getallen \(x,\ y\) die voldoen aan \(ax + by = c\) (de geheeltallige oplossingen)
- Is \(c\) geen veelvoud van de grootste gemene deler van \(a\) en \(b\), dan zijn er geen geheeltallige oplossingen. De pagina controleert dit en laat ook zien waarom
- Je kunt de tabel met delingen van het algoritme van Euclides volgen en de tabel die terug rekent via de resten om een particuliere oplossing te maken, rij voor rij
- Het antwoord is niet maar één paar: je krijgt de algemene oplossing \(x = x_0 + \dfrac{b}{g}t,\ y = y_0 - \dfrac{a}{g}t\) (waarbij \(t\) een geheel getal is) en een tabel met oplossingen voor verschillende waarden van \(t\)
- Je kunt alleen de positieve oplossingen bewaren of alleen de niet-negatieve. Zo los je vraagstukken op als “hoeveel kaartjes van € 50 en € 80 zijn samen precies € 1.000?” rechtstreeks op
Waarvoor is deze berekening handig?
Alleen kaartjes van € 50 en € 80 kopen voor precies € 1.000, iets wegen met maar twee soorten gewichten, of een exacte lengte maken van stukken van vaste lengte: vraagstukken als deze, “combineer dingen van vaste grootte om precies een doel te halen”, zijn precies het probleem van het vinden van geheeltallige oplossingen van \(ax + by = c\).
Je kunt geen negatief aantal kaartjes kopen, dus in de praktijk krijg je het antwoord pas als je beperkt tot de positieve geheeltallige oplossingen.
Heb je alleen dozen van 6 en dozen van 10, dan hangt het van \(6x + 10y = c\) af of je een bestelling van precies \(c\) stuks kunt inpakken: er moet een oplossing zijn met gehele getallen van 0 of meer. De ggd van 6 en 10 is 2, dus een bestelling van een oneven aantal stuks kun je nooit precies inpakken, hoe je de dozen ook combineert.
Bij het inpakken van eten of onderdelen weet je met zo’n berekening welke aantallen kunnen en dus welke bestellingen je kunt aannemen en welke dozen je moet hebben.
Het bekende raadsel om precies 4 liter af te meten met alleen een kan van 5 liter en een kan van 3 liter komt overeen met de geheeltallige oplossingen van \(5x + 3y = 4\) (\(x\) en \(y\) tellen, met een teken, hoe vaak je elke kan vult of leegschenkt). Omdat \(\gcd(5,\ 3) = 1\), vertelt de vergelijking je van tevoren dat deze twee kannen elk geheel aantal liters kunnen afmeten.
Het is dezelfde wiskunde als in een laboratorium of keuken wanneer je vraagt: “Kan ik de hoeveelheid die ik nodig heb afmeten met alleen het gereedschap dat ik heb?”
RSA-versleuteling, die internetbankieren en online winkelen beveiligt, maakt de waarde \(d\) van de privésleutel uit de waarde \(e\) van de publieke sleutel door de lineaire diofantische vergelijking \(e d + \varphi k = 1\) op te lossen (\(\varphi\) is een geheel getal dat van de sleutel afhangt). Het gereedschap daarvoor is hetzelfde uitgebreid algoritme van Euclides als op deze pagina.
Deze procedure lost het ook voor getallen van honderden cijfers meteen op, en dat is een van de dingen die de versleuteling praktisch maken.
Stel dat product A \(a\) kg materiaal per stuk gebruikt en product B \(b\) kg, en je wilt precies de \(c\) kg opmaken die je hebt. Dit plan is het probleem van het vinden van oplossingen van \(ax + by = c\) in gehele getallen van 0 of meer. Je kunt geen half product maken, dus het antwoord moet een geheel getal zijn.
Het vakgebied dat planningsproblemen behandelt waarvan de antwoorden gehele getallen moeten zijn, heet geheeltallig programmeren. Het wordt gebruikt voor productieplanning, personeelsroosters, bezorgplanning en meer.
Formules en grafieken
Symbolen en begrippen
Symbolen
| \(a,\ b\) | a, b | De coëfficiënten die \(x\) en \(y\) vermenigvuldigen. Letters aan het begin van het alfabet, \(a,\ b,\ c\), worden van oudsher voor vaste getallen gebruikt. Op deze pagina zijn beide gehele getallen. |
| \(c\) | c | De constante rechts van de vergelijking. Het is het totaal dat je wilt bereiken, en of het een veelvoud van de ggd is, bepaalt of er oplossingen zijn. |
| \(x,\ y\) | x, y | De onbekenden die je oplost. Het gebruik van letters aan het eind van het alfabet voor onbekenden is een gewoonte die door Descartes zou zijn verspreid. Op deze pagina tellen alleen gehele waarden als antwoord. |
| \(\gcd(a,\ b)\) | ggd van a en b | De grootste gemene deler van \(a\) en \(b\). In Nederlandse schoolboeken schrijf je dit meestal als ggd(a, b); de internationale afkorting gcd komt van “greatest common divisor”. In boeken over getaltheorie wordt het soms afgekort tot \((a,\ b)\). |
| \(g\) | g | Een korte naam voor de grootste gemene deler \(\gcd(a,\ b)\). Zo blijven formules kort, zoals \(\dfrac{b}{g}\) en \(\dfrac{a}{g}\) in de algemene oplossing. |
| \(x_0,\ y_0\) | x nul, y nul | De particuliere oplossing, dus de eerste geheeltallige oplossing die je vindt. De kleine 0 geeft aan dat het het beginpunt is, “oplossing nummer 0”. Elke geheeltallige oplossing wordt vanaf hier opgeschreven. |
| \(x_1,\ y_1\) | x met index 1, y met index 1 | Het paar gehele getallen dat je vindt door het algoritme van Euclides terug te lopen. Het voldoet aan \(a x_1 + b y_1 = g\). Vermenigvuldig het met \(\dfrac{c}{g}\) om de particuliere oplossing \((x_0,\ y_0)\) te krijgen. |
| \(t\) | t | Een variabele die elk geheel getal mag zijn (een parameter). Zo kan één formule alle geheeltallige oplossingen in één keer beschrijven. Elk geheel getal dat je voor \(t\) invult, geeft weer een geheeltallige oplossing. |
| \(m\) | m | Het gehele getal dat zegt hoeveel keer \(g\) in \(c\) past. Letters als \(m\), \(n\) en \(k\) worden vaak voor gehele getallen gebruikt. Geheeltallige oplossingen bestaan als je \(c = g \times m\) kunt schrijven, en alleen dan. |
| \(q\) | q | Het quotiënt van een deling. In de tabel van het algoritme van Euclides is het de \(2\) in \(13 = 5 \times 2 + 3\). |
| \(r\) | r | De rest van een deling. In de tabel van het algoritme van Euclides is het de \(3\) in \(13 = 5 \times 2 + 3\). Het algoritme stopt als deze rest 0 wordt. |
| \(\geq\) | is groter dan of gelijk aan | Het teken van de ongelijkheid voor “het linkerlid is groter dan of gelijk aan het rechterlid”. \(x \geq 1\) zegt dat \(x\) minstens 1 is. Het tegenovergestelde \(\leq\) zegt “kleiner dan of gelijk aan”. |
Begrippen
| lineaire diofantische vergelijking | De eenvoudigste soort diofantische vergelijking: een lineaire vergelijking met twee onbekenden maar één vergelijking, zoals \(ax + by = c\). Bij reële getallen is elk punt op de lijn een oplossing, dus de oplossing is niet uniek. Ook als je alleen geheeltallige oplossingen bewaart, zijn het er meestal oneindig veel. |
| diofantische vergelijking | De naam voor vergelijkingen waarvan de antwoorden gehele getallen moeten zijn. De naam komt van Diofantos, een wiskundige uit het oude Griekenland. De lineaire diofantische vergelijking op deze pagina is de eenvoudigste soort. |
| geheeltallige oplossing | Een oplossing van de vergelijking waarbij zowel \(x\) als \(y\) gehele getallen zijn. Bij vraagstukken over hoeveelheden die je niet kunt splitsen, zoals aantallen kaartjes, stuks of mensen, hebben alleen geheeltallige oplossingen betekenis. |
| particuliere oplossing | Het eerste paar dat je vindt onder de oneindig veel geheeltallige oplossingen. Elk paar is goed. Vanaf dit paar beschrijft de algemene oplossing alle oplossingen. |
| algemene oplossing | Alle geheeltallige oplossingen opgeschreven als één formule met een geheel getal \(t\). Elk geheel getal dat je voor \(t\) invult, geeft weer een oplossing. |
| grootste gemene deler (ggd) | Het grootste positieve gehele getal dat elk van twee of meer gehele getallen deelt. In het Engels heet het de greatest common divisor (gcd). Bij een lineaire diofantische vergelijking bepaalt deze waarde zowel of er oplossingen zijn als hoe ver ze uit elkaar liggen. |
| algoritme van Euclides | Een manier om de grootste gemene deler te vinden door steeds het grotere getal door het kleinere te delen en het paar te vervangen door de deler en de rest. De deler op het moment dat de rest 0 wordt, is de ggd. Het staat in de “Elementen” van Euclides uit de 3e eeuw v.Chr. en wordt vaak het oudste algoritme ter wereld genoemd. |
| uitgebreid algoritme van Euclides | Een manier om de grootste gemene deler te schrijven in de vorm \(a x_1 + b y_1\) door de vergelijkingen van het algoritme van Euclides van onderaf weer in te vullen. Je gebruikt het om een particuliere oplossing van een lineaire diofantische vergelijking te maken. |
| identiteit van Bézout | De stelling dat er altijd gehele getallen \(x_1,\ y_1\) bestaan met \(a x_1 + b y_1 = \gcd(a,\ b)\). Ze is genoemd naar de Franse wiskundige Bézout. Het is de reden dat een lineaire diofantische vergelijking kan worden opgelost. |
| relatief priem | Twee gehele getallen zijn relatief priem (ook wel onderling ondeelbaar) als hun grootste gemene deler 1 is. 3 en 4 zijn bijvoorbeeld relatief priem. \(\dfrac{a}{g}\) en \(\dfrac{b}{g}\) zijn altijd relatief priem, en daarom liggen de oplossingen op gelijke afstanden. |
| veelvoud | Een getal dat je krijgt door een geheel getal met een ander geheel getal te vermenigvuldigen. De veelvouden van \(10\) zijn \(\dots,\ -20,\ -10,\ 0,\ 10,\ 20,\ \dots\). Ook 0 en negatieve getallen tellen mee. |
| rest | Wat er overblijft als een deling met gehele getallen niet precies uitkomt. \(13 \div 5\) heeft quotiënt \(2\) en rest \(3\). Het algoritme van Euclides werkt alleen met deze resten. |
| quotiënt | Bij een deling met gehele getallen het hele aantal keren dat de deler past. In \(13 = 5 \times 2 + 3\) is het quotiënt \(2\). |
| roosterpunt | Een punt in het coördinatenvlak waarvan de \(x\)- en \(y\)-coördinaat allebei gehele getallen zijn, zoals de hoekpunten van de hokjes op ruitjespapier. De geheeltallige oplossingen van een lineaire diofantische vergelijking zijn precies de roosterpunten op de lijn \(ax + by = c\). |
| parameter | Een variabele die je vrij mag veranderen en die je gebruikt om een hele verzameling oplossingen als één formule te schrijven. Op deze pagina is \(t\) de parameter. |
| coëfficiënt | Het getal voor een letter. In \(3x\) is de coëfficiënt \(3\). Staat er geen getal, zoals bij \(x\), dan is de coëfficiënt 1. |
| ongelijkheid | Een bewering die de grootte van twee waarden vergelijkt, zoals \(t \geq 0\). Je gebruikt het om te beperken tot de positieve geheeltallige oplossingen. |
Handig om vooraf te weten
Dit helpt je om de berekening op deze pagina echt te begrijpen, en niet alleen op de knop te drukken.
Kom je er niet uit, dan is het terugkeren naar deze onderwerpen de snelste weg vooruit.
| Delen met rest (groep 5-8, 8-12 jaar) |
|
| Delers, veelvouden en de ggd (klas 1, 12-13 jaar) |
|
| Termen en lineaire vergelijkingen (klas 1-2, 12-14 jaar) |
|
| Lineaire vergelijkingen met twee variabelen en hun grafieken (klas 2-3, 13-15 jaar) |
|
| Ongelijkheden (klas 2-3, 13-15 jaar) |
|
| Rekenen met breuken (groep 6-8, 9-12 jaar) |
|
Berekenen met Excel
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Constante c rechts | 1000 |
| Ggd g | =GGD(B1;B2) |
| Rest van c ÷ g | =REST(B3;B4) |
| Geheeltallige oplossingen? | =ALS(B5=0;"Er zijn oplossingen";"Geen oplossingen") |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| x1 uit het algoritme van Euclides | -3 |
| y1 uit het algoritme van Euclides | 2 |
| a×x1 + b×y1 | =B1*B3+B2*B4 |
| Ggd g | =GGD(B1;B2) |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Constante c rechts | 1000 |
| Ggd g | =GGD(B1;B2) |
| Particuliere oplossing x0 | 4 |
| Particuliere oplossing y0 | 10 |
| Geheel getal t | 1 |
| x = x0 + (b/g)×t | =B5+(B2/B4)*B7 |
| y = y0 − (a/g)×t | =B6-(B1/B4)*B7 |
| Controle a×x + b×y | =B1*B8+B2*B9 |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Ggd g | =GGD(B1;B2) |
| Particuliere oplossing x0 | 4 |
| Particuliere oplossing y0 | 10 |
| Ondergrens van t (uit x ≥ 1) | =-INTEGER((B4-1)/(B2/B3)) |
| Bovengrens van t (uit y ≥ 1) | =INTEGER((B5-1)/(B1/B3)) |
| Aantal positieve geheeltallige oplossingen | =MAX(0;B7-B6+1) |
De eerste tabel gebruikt het voorbeeld 50x + 80y = 1000. De ggd is 10 en 1000 ÷ 10 geeft rest 0, dus er staat “Er zijn oplossingen”. Verander 1000 in 1001 en het wordt “Geen oplossingen”.
De tweede tabel controleert dat x1 = −3 en y1 = 2, gevonden door het algoritme van Euclides terug te lopen, echt voldoen aan de identiteit van Bézout. 50×(−3) + 80×2 = 10, en dat komt overeen met de ggd.
De derde tabel haalt één oplossing uit de algemene oplossing. Vul 1 in voor t en je krijgt x = 12 en y = 5, en de controlerij komt weer uit op 1000. Probeer ook andere gehele getallen voor t.
De vierde tabel beperkt tot de positieve geheeltallige oplossingen. De ondergrens van t is 0 en de bovengrens is 1, dus er zijn 2 positieve geheeltallige oplossingen (t = 0 en t = 1). Deze twee formules zijn voor het geval dat a en b allebei positief zijn. Bij een negatieve coëfficiënt draait de richting van de ongelijkheid om, dus pas op.
Berekenen met Google Spreadsheets
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Constante c rechts | 1000 |
| Ggd g | =GGD(B1;B2) |
| Rest van c ÷ g | =REST(B3;B4) |
| Geheeltallige oplossingen? | =ALS(B5=0;"Er zijn oplossingen";"Geen oplossingen") |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| x1 uit het algoritme van Euclides | -3 |
| y1 uit het algoritme van Euclides | 2 |
| a×x1 + b×y1 | =B1*B3+B2*B4 |
| Ggd g | =GGD(B1;B2) |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Constante c rechts | 1000 |
| Ggd g | =GGD(B1;B2) |
| Particuliere oplossing x0 | 4 |
| Particuliere oplossing y0 | 10 |
| Geheel getal t | 1 |
| x = x0 + (b/g)×t | =B5+(B2/B4)*B7 |
| y = y0 − (a/g)×t | =B6-(B1/B4)*B7 |
| Controle a×x + b×y | =B1*B8+B2*B9 |
| Coëfficiënt a van x | 50 |
| Coëfficiënt b van y | 80 |
| Ggd g | =GGD(B1;B2) |
| Particuliere oplossing x0 | 4 |
| Particuliere oplossing y0 | 10 |
| Ondergrens van t (uit x ≥ 1) | =-INTEGER((B4-1)/(B2/B3)) |
| Bovengrens van t (uit y ≥ 1) | =INTEGER((B5-1)/(B1/B3)) |
| Aantal positieve geheeltallige oplossingen | =MAX(0;B7-B6+1) |
Berekenen met Python
from math import gcd
# coëfficiënten van ax + by = c (gehele getallen)
a, b, c = 50, 80, 1000
def extended_gcd(x, y):
# uitgebreid algoritme van Euclides: geeft gcd en s, t met x*s + y*t = gcd
if y == 0:
return x, 1, 0
g, s, t = extended_gcd(y, x % y)
return g, t, s - (x // y) * t
g = gcd(a, b)
if c % g != 0:
print(f"{c} is geen veelvoud van {g}, dus er zijn geen geheeltallige oplossingen")
else:
_, s, t = extended_gcd(a, b)
x0, y0 = s * (c // g), t * (c // g) # particuliere oplossing (één geheeltallige oplossing)
step_x, step_y = b // g, a // g # stapgrootte van x en stapgrootte van y
# verschuif tot x de kleinste waarde is die 0 of meer is, voor een makkelijker te lezen oplossing
n = x0 // step_x
x0, y0 = x0 - n * step_x, y0 + n * step_y
print(f"Particuliere oplossing: (x, y) = ({x0}, {y0})")
print(f"Algemene oplossing: x = {x0} + {step_x}t, y = {y0} - {step_y}t (t is een geheel getal)")
for k in range(-2, 3):
print(f" t = {k:2}: (x, y) = ({x0 + step_x * k}, {y0 - step_y * k})")
# bewaar alleen de positieve geheeltallige oplossingen (x >= 1 en y >= 1)
t_low = -((1 - x0) // -step_x)
t_high = (y0 - 1) // step_y
print("Positieve geheeltallige oplossingen:", [(x0 + step_x * k, y0 - step_y * k)
for k in range(t_low, t_high + 1)])
De formule in LaTeX en andere wiskundenotaties (om te kopiëren)
c = gcd(a, b) × m
c = \gcd(a, b) \times m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>c</mi>
<mo>=</mo>
<mi>gcd</mi><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>×</mo>
<mi>m</mi>
</mrow>
</math>
c = gcd(a, b) * m
Mod[c, GCD[a, b]] == 0
irem(c, igcd(a, b)) = 0;
mod(c, gcd(a, b)) == 0
c = gcd(a,b) × m
a·x₁ + b·y₁ = gcd(a, b)
a x_1 + b y_1 = \gcd(a, b)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><msub><mi>x</mi><mn>1</mn></msub>
<mo>+</mo>
<mi>b</mi><msub><mi>y</mi><mn>1</mn></msub>
<mo>=</mo>
<mi>gcd</mi><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
</mrow>
</math>
a*x_1 + b*y_1 = gcd(a, b)
ExtendedGCD[a, b]
igcdex(a, b, x1, y1);
[g, x1, y1] = gcd(a, b);
a x_1 + b y_1 = gcd(a,b)
x = x₀ + (b/g)t, y = y₀ − (a/g)t
x = x_0 + \frac{b}{g} t, \quad y = y_0 - \frac{a}{g} t
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub>
<mo>+</mo>
<mfrac><mi>b</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>,</mo><mspace width="1em"/>
<mi>y</mi><mo>=</mo><msub><mi>y</mi><mn>0</mn></msub>
<mo>−</mo>
<mfrac><mi>a</mi><mi>g</mi></mfrac><mi>t</mi>
</mrow>
</math>
x = x_0 + (b/g)t, y = y_0 - (a/g)t
Solve[a x + b y == c, {x, y}, Integers]
isolve(a*x + b*y = c);
S = solve(a*x + b*y == c, [x y], 'Integer', true);
x = x_0 + (b/g)t, y = y_0 - (a/g)t
x₀ + (b/g)t ≥ 1 en y₀ − (a/g)t ≥ 1
x_0 + \frac{b}{g} t \geq 1, \quad y_0 - \frac{a}{g} t \geq 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>x</mi><mn>0</mn></msub>
<mo>+</mo>
<mfrac><mi>b</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>≥</mo><mn>1</mn>
<mo>,</mo><mspace width="1em"/>
<msub><mi>y</mi><mn>0</mn></msub>
<mo>−</mo>
<mfrac><mi>a</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>≥</mo><mn>1</mn>
</mrow>
</math>
x_0 + (b/g)t >= 1 and y_0 - (a/g)t >= 1
Solve[a x + b y == c && x >= 1 && y >= 1, {x, y}, Integers]
isolve({a*x + b*y = c, x >= 1, y >= 1});
S = solve([a*x + b*y == c, x >= 1, y >= 1], [x y], 'Integer', true);
x_0 + (b/g)t ≥ 1, y_0 − (a/g)t ≥ 1
Zo laat je ChatGPT de berekening doen
Je bent een rekenassistent voor getaltheorie (eigenschappen van gehele getallen). Voer de volgende berekening uit door daadwerkelijk Python-code uit te voeren en baseer je antwoord alleen op de getallen uit het resultaat van de uitvoering (geef geen antwoord op basis van hoofdrekenen of gokken). Bepaal de gehele oplossingen van de lineaire diofantische vergelijking 50x + 80y = 1000. Laat elk van de volgende zien: 1. De grootste gemene deler van 50 en 80, en of 1000 daar een veelvoud van is 2. De stappen van het algoritme van Euclides (tot de rest 0 is), en de x1, y1 met 50×x1 + 80×y1 = ggd, gevonden door terug te werken 3. Een particuliere oplossing (x0, y0) en de algemene oplossing x = x0 + (b/g)t, y = y0 − (a/g)t 4. Alle gehele oplossingen waarbij zowel x als y 1 of meer is Gebruik in Python math.gcd en het uitgebreide algoritme van Euclides om exact te rekenen, en laat de formules zien die je hebt gebruikt en de getallen uit het resultaat van de uitvoering.
Zo werkt het
-
1Vul je getallen inTyp de getallen waarmee je wilt rekenen in de invoervelden
-
2BerekenKlik op de knop “Berekenen”
-
3Bekijk het resultaatHet resultaat verschijnt meteen. Op dezelfde pagina vind je ook de uitwerking van de berekening en de uitleg van de formule
Kenmerken van DataChef
Geen voorkennis nodig – intuïtieve en eenvoudige bediening
Zonder persoonlijke gegevens op te geven
Bestand wordt automatisch verwijderd zodra je op "Downloaden" klikt
Geen bronvermelding vereist
Geen toestemming vooraf nodig