sqchk.py
#!/usr/bin/env python
#
# Check for square numbers
#
# Author: Yotam Medini [email protected] -- Created: 2005/December/11
#
import sys
def usage_exit(a0, rc):
sys.stderr.write(
"""
Usage:
%s <N1> ... <Nn>
Where:
<Ni> Integer numbers to check for being squares
""" % a0)
sys.exit(rc)
def isqrt(n):
m = 0
M = n + 1
error = M - m
progress = True
while progress:
x = (m + M)/2
xSquare = x * x
if xSquare == n:
progress = False
else:
if xSquare < n:
m = x
else:
M = x
new_error = M - m
progress = (new_error < error)
error = new_error
return x
def isSquare(n):
r = isqrt(n)
return (r*r == n)
# Begin program
if len(sys.argv) == 1:
usage_exit(sys.argv[0], 1)
args_after_1st = sys.argv[1:]
for arg in args_after_1st:
n = int(arg)
sys.stdout.write("%5d is " % n)
if not isSquare(n):
sys.stdout.write("Not ")
sys.stdout.write("square\n")
sys.exit(0)
Generated by GNU enscript 1.6.4.