In deze oefening worden de nulpunten bepaald van een veelterm in \(Z_{p}[x]\).
De veelterm \(a_n\,x^n+a_{n-1}x^{n-1}+\ldots+a_2x^2+a_{1}x + a_0\) wordt voorgesteld als een list \([a_n,a_{n-1}\ldots,a_2,a_1, a_0]\) met \(a_i\) ∈ \(Z_p\). De constante staat achteraan, en \(a_n\) ≠ \(0\).
reken(p, v, g)
die de getalwaarde berekent van de veelterm v
voor een geheel getal g
in \(Z_p\). De eerste parameter p
bevat een priemgetal, de tweede parameter v
is een list met gehele getallen en de derde parameter g
is het geheel getal. Gebruik daarbij methode van Horner1:Je berekent dus enkel optellingen en vermenigvuldigingen in \(Z_p\). Dit wordt gecontroleerd in Dodona!
nulpunt(p, v)
die voor een veelterm v
één nulwaarde in \(Z_{p}\) teruggeeft. Indien de veelterm geen nulwaarden heeft, wordt \(-1\) teruggegeven.
Een nulwaarde is een getal uit \(Z_p\) waarvoor de getalwaarde van de veelterm 0 uitkomt. Merk op dat enkel getallen uit de verzameling \(Z_p = \{0,1,...,p-1\}\) gecontroleerd moeten worden. Het volstaat dus om na te gaan of één van deze \(p\) getallen een nulpunt is. Andere getallen zijn er immers niet!Opmerking: Je moet nergens controleren of p
een priemgetal is
>>> reken(7, [3,7,4,2], 3)
4
>>> reken(7, [3,7,4,2], 4)
0
>>> nulpunt(7, [3,7,4,2])
4