lcm3.py
#!/usr/bin/env python
#
# Get 3 numbers from user, print their lcm (Least Common Multiple).
#
# Author: Yotam Medini [email protected] -- Created: 2005/November/27
#
import sys
def gcd(m, n):
if m < 0:
m = -m
if n < 0:
n = -n
if m < n:
t = m; m = n; n = t; # swap
# Now we have: m >= n >= 0
while n > 0:
remainder = m % n
m = n
n = remainder
return m
def lcm(m, n):
multiple = m * n
if multiple != 0: # Otherwise, lcm is actually infinity
if multiple < 0:
multiple = -multiple # Let's be positive
multiple = multiple / gcd(m, n)
return multiple
# Begin the program
# Check for 3 parameters
if len(sys.argv) != 1+3:
sys.stderr.write("Usage: %s <number> <number> <number>\n" % sys.argv[0])
sys.exit(1)
# Convert the command line parameters strings to positive integers.
n1 = int(sys.argv[1])
n2 = int(sys.argv[2])
n3 = int(sys.argv[3])
m = lcm(n1, n2)
m = lcm(m, n3) # Combined lcm
sys.stdout.write("lcm(%d, %d, %d) = " % (n1, n2, n3))
if m == 0 and ((n1 !=0) or (n2 != 0) or (n3 != 0)):
sys.stdout.write("infinity\n")
else:
sys.stdout.write("%d\n" % m)
sys.exit(0)
Generated by GNU enscript 1.6.4.