Dit bericht is geplaatst op zondag 28 februari 2010 om 12:40 in categorieën Trivia. Je kunt de reacties volgen via een RSS 2.0 feed. Je kunt een reactie plaatsen, of een trackback van je eigen site plaatsen.
Wiskundemeisjes
Ionica & Jeanine
Delen door 13 voor gevorderden
In Trivia, door Ionica
Ernst (één van de heren achter wiskundesletjes.nl, maar dat terzijde) wees me op een gave truc om snel te delen bij programmeren. Ik was zelf nooit een goede, elegante programmeur (brute force is my middle name), maar ik herinner we wel dat delen meer tijd kost dan vermenigvuldigen. Dus als je delen op de een of andere manier kunt vervangen door vermenigvuldigen, dan wordt je programma sneller.
Op Ridiculous Fish Blog staat een prachtig stuk over delen door 13.
Stel dat je een of andere geheel getal wilt delen door 13 en dat programmeert in C. De compiler code doet dan iets geks, namelijk vermenigvuldigen met 1321528399 (en daarna nog wat andere dingen). Zoals de scherpe lezer nu zal opmerken, is delen door 13 niet hetzelfde als vermenigvuldigen met 1321528399.
Echter: vermenigvuldigen met 1321528399 en daarna delen door \(\) (en bedenk dat delen door 2 makkelijk is, dat is een bitshift) is hetzelfde als delen door 12,9999999977299... En dat lijkt dan weer heel erg op 13.
Lees op Ridiculous Fish Blog een mooie, intuïtieve uitleg waarom de afronding altijd goed gaat. Of koop gelijk Hacker's Delight, het boek waar deze truc al veel eerder stond. Dit is trouwens verder geen speciale eigenschap van 13, voor andere delers kun je ook een getal vinden om mee te vermenigvuldigen (en bitshiften).