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.