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.