Voor een priemgetal \(p\) is de eindige verzameling \(Z_p = \{0,1,2,...,p-1\}\) een veld. Dit betekent dat optellen, aftrekken, vermenigvuldigen en delen kan gebruikt worden. Elk getal dat je bekomt wordt beperkt tot de eindige verzameling \(Z_p\) door te rekenen modulo \(p\).
In deze oefening worden functies geschreven om te werken met veeltermen in \(Z_{p}[x]\), dit zijn veeltermen met coëfficiënten in \(Z_p\).
Een 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\).
Voorbeelden
\(v = [1,6,2]\) stelt de veelterm \(x^2 + 6x + 2\) voor in \(Z_7\).
\(v = [-1,6,9,2] = [2,0,0,2]\) in \(Z_3\) en stelt de veelterm \(2x^3 + 2\) voor in \(Z_3\).
veelterm(p, v)
die een veelterm teruggeeft als string in de vorm zoals je gewoon bent. De eerste parameter p
bevat een priemgetal, de tweede parameter v
is een list met gehele getallen. Alle coëfficiënten moeten omgezet worden naar \(Z_p\) (zie voorbeelden).Let op !
Opmerking: Je moet nergens controleren of p
een priemgetal is.
Beperkt het aantal if
statements - gebruik eventueel een hulpfunctie. Dit wordt apart gecontroleerd in Dodona.
>>> veelterm(7, [1,6,2])
x^2 + 6x + 2
>>> veelterm(3, [-1,6,9,2])
2x^3 + 2