Пример #1
0
def find_primitive_roots(degree):
    roots = []
    n = pow(modulus, degree)
    for i in range(2, n):
        e = decimal_to_base_n(i, modulus)
        p = PolynomialOnRing(e)
        if(is_primitive_root(p)):
            roots.append(p)
    return roots
Пример #2
0
def find_minimal_polynomial(polynomial):
    zero = PolynomialOnRing([0])
    i = 1

    while True:
        minimal_polynomial = decimal_to_base_n(i, modulus)

        p = PolynomialOnRing([0])
        for degree, coefficient in enumerate(reversed(minimal_polynomial)):
            c = PolynomialOnRing([coefficient])
            p += c * pow(polynomial, degree)

        if(p == zero):
            return PolynomialOnRing(minimal_polynomial)

        i += 1