iroot.py
#!/usr/bin/env python
#
# Computer integer part of root of a number.
#
import sys
def usage_exit(a0, rc):
sys.stderr.write(
"""
Usage:
%s <m> <n>
Where:
<m> Integer number to get root from
<n> Integer number which is the order of the root to get.
""" % a0)
sys.exit(rc)
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
# Begin program
if len(sys.argv) != 3:
usage_exit(sys.argv[0], 1)
m = int(sys.argv[1])
n = int(sys.argv[2])
r = iroot(m, n)
sys.stdout.write("IntegerRoot[%d](%d) = %d\n" % (n, m, r))
sys.exit(0)
Generated by GNU enscript 1.6.4.