"""DuckieDai Rational Zero Finder for TI-84 Plus CE Python."""


def duckiedai_intro(program_name, wait=True):
    title = program_name[:16]
    empty = 16 - len(title)
    left = empty // 2
    right = empty - left

    print("+----------------------+")
    print("|   " + " " * left + title + " " * right + "   |")
    print("|                      |")
    print("|       __             |")
    print("|   ___(o )>  quack!   |")
    print("|   \\ <_. )           |")
    print("|    `---'             |")
    print("|     by DuckieDai     |")
    print("+----------------------+")
    print("Loading...")

    if wait:
        input("Press enter to start ")
        print("\n" * 6)


def gcd(a, b):
    while b != 0:
        a, b = b, a % b
    return a


duckiedai_intro("Rational Zeros")

constant = int(input("Constant: "))
lead = int(input("Leading coeff: "))

if constant < 0:
    constant = -constant

if lead < 0:
    lead = -lead

p_factors = []
q_factors = []

for i in range(1, constant + 1):
    if constant % i == 0:
        p_factors.append(i)

for i in range(1, lead + 1):
    if lead % i == 0:
        q_factors.append(i)

zeros = []

for p in p_factors:
    for q in q_factors:
        g = gcd(p, q)

        num = p // g
        den = q // g

        pair = (num, den)

        if pair not in zeros:
            zeros.append(pair)

print()
print("Possible zeros:")
print("Use +/-")

count = 0

for pair in zeros:
    num = pair[0]
    den = pair[1]

    if den == 1:
        print("+/-", num)
    else:
        print("+/-", str(num) + "/" + str(den))

    count += 1

    if count % 5 == 0:
        if count < len(zeros):
            input("Enter for more ")

print()
print("DuckieDai says: done!")

