def format_veelterm(v: list, p: int) -> str: if len(v) == 0: return "0" graad = len(v) - 1 termen = [] for i, c in enumerate(v): c = c % p if c == 0: continue macht = graad - i if macht == 0: term = f"{c}" else: term = f"{c}x" if c > 1 else "x" if macht > 1: term += f"^{macht}" termen.append(term) return " + ".join(termen) def plus(v_1: list, v_2: list, p: int) -> list: l = max(len(v_1), len(v_2)) v_1 = [0] * (l - len(v_1)) + v_1 v_2 = [0] * (l - len(v_2)) + v_2 som = [(j + v_2[i]) % p for i, j in enumerate(v_1)] while len(som) > 0 and som[0] == 0: som.pop(0) return som def factor(v: list, f: int, p: int) -> list: v = [f * i % p for i in v] while len(v) > 0 and v[0] == 0: v.pop(0) return v def maal_x_tot_de_macht_k(v: list, k: int) -> list: return v + [0] * k def maal(v_1: list, v_2: list, p: int) -> list: v = [0] k = len(v_1) - 1 for j in v_1: v = plus(v, factor(maal_x_tot_de_macht_k(v_2, k), j, p), p) k -= 1 return v