ispytha.py

#!/usr/bin/env python
#
#  Check if pair of numbers can make a Pythagorean triple.
#
#  Author:  Yotam Medini  [email protected] -- Created: 2005/December/25
#

import sys

def iroot(a, n):
    m = 0
    M = a + 1
    error = M - m
    progress = True
    while progress:
        x = (m + M)/2
        xPower = x**n
        if xPower == a:
            progress = False
        else:
            if xPower < a:
                m = x
            else:
                M = x
            new_error = M - m
            progress = (new_error < error)
            error = new_error
    return x


def usage_exit(a0, rc):
    sys.stderr.write("""
Check pairs for Pythagorean triples.
Usage:
   %s <A1> <B1> <A2> <B2> .... <An> <Bn>

Where <Ai> <Bi> are pairs of numbers to be checked
for making the sides of right-angled triangle of all-integer sides.
""" % a0)
    sys.exit(rc)


def isPythagoras(a, b):
    c2 = a*a + b*b
    c = iroot(c2, 2)
    return (c*c == c2)


nArgs = len(sys.argv) 
if (nArgs == 1) or (((nArgs - 1) % 2) != 0):
    usage_exit(sys.argv[0], 1)

ai = 1
bi = 2
while bi <= nArgs:
    a = int(sys.argv[ai])
    b = int(sys.argv[bi])
    sys.stdout.write("%4d %4d  " % (a, b))
    if isPythagoras(a, b):
        sys.stdout.write(" ARE")
    else:
        sys.stdout.write(" are NOT")
    sys.stdout.write(" sides of a Pythagorean integer-triangle\n")
    ai += 2
    bi += 2

sys.exit(0)

Generated by GNU enscript 1.6.4.