Book VII · Proposition 33

VII.33

Given as many numbers as we please, to find the least of those which have the same ratio with them.Heath, 1908

Every step, checked

What it needs, and what needs it

Needs: VII.21 VII.22

Used by: X.5

Depth: 2 steps of argument above the first principles. Parallel postulate: not needed.

What it takes on trust

Nothing. It draws no intersections and reads nothing off the picture.

The proposition as code

@proposition(
    "VII.33",
    CONSTRUCTION,
    sample=lambda rng: (rng.randint(2, 200), rng.randint(2, 200)),
)
def prop_VII_33(a: int, b: int) -> Out:
    hypothesis("both are numbers", a > 1 and b > 1, guard=True)
    least = least_terms(a, b)
    because(prop_VII_21, a, b) if coprime(a, b) else None
    because(prop_VII_22, a, b)

    claim("the pair found has the same ratio", "VII.33", least[0] * b == least[1] * a)
    claim("it is in least terms, being prime to one another", "VII.22",
          coprime(*least))
    claim("and no smaller pair has that ratio", "VII.21",
          not any(x * b == y * a
                  for x in range(1, least[0]) for y in range(1, least[1])))
    return Out(least=least)