Stel, ik krijg de opdracht om het eerste gehele getal te vinden waarvoor geldt dat 'mod 1' tot en met 'mod 20' 0 oplevert (sommigen herkennen dit probleem misschien wel
).
Nu is het natuurlijk niet erg moeilijk om een dergelijk probleem numeriek aka. brute-force op te lossen, dat kost alleen maar een beetje tijd en is natuurlijk niet zo efficiënt.
Eerst schreef ik een klein programmaatje waarvan ik weet dat het werkt (ik weet dat het antwoord voor 'mod 1' tot en met 'mod 10' 2520 moet zijn).
Vervolgens is het zaak om zoveel mogelijk mogelijkheden uit te sluiten en zo het algoritme zo min mogelijk te hoeven laten rekenen.
Ik bedacht me dat een even getal alleen geen rest overhoudt wanneer het door een even getal gedeeld wordt, waarop ik me bedacht dat aangezien het altijd deelbaar door 20 moet kunnen zijn (want mod 20 == 0), ik stappen kan gaan nemen van 20. Er zijn vast nog wel meer dingen te verzinnen om het aantal tests te verkleinen en het algoritme te versnellen.
Nu is mijn vraag, hoe benaderen jullie dergelijke problemen (dit is slechts een voorbeeld probleem, waar ik toevallig net aan begonnen ben)? Hoe los je zoiets methodisch/analytisch op? Welke stappen neem je en waarom neem je die?
Nu is het natuurlijk niet erg moeilijk om een dergelijk probleem numeriek aka. brute-force op te lossen, dat kost alleen maar een beetje tijd en is natuurlijk niet zo efficiënt.
Eerst schreef ik een klein programmaatje waarvan ik weet dat het werkt (ik weet dat het antwoord voor 'mod 1' tot en met 'mod 10' 2520 moet zijn).
Vervolgens is het zaak om zoveel mogelijk mogelijkheden uit te sluiten en zo het algoritme zo min mogelijk te hoeven laten rekenen.
Ik bedacht me dat een even getal alleen geen rest overhoudt wanneer het door een even getal gedeeld wordt, waarop ik me bedacht dat aangezien het altijd deelbaar door 20 moet kunnen zijn (want mod 20 == 0), ik stappen kan gaan nemen van 20. Er zijn vast nog wel meer dingen te verzinnen om het aantal tests te verkleinen en het algoritme te versnellen.
Nu is mijn vraag, hoe benaderen jullie dergelijke problemen (dit is slechts een voorbeeld probleem, waar ik toevallig net aan begonnen ben)? Hoe los je zoiets methodisch/analytisch op? Welke stappen neem je en waarom neem je die?