Fatorar.py: 
#fatorar: colocar o numero em produto de numeros primos(forma fatorada)
def fatorar(x):          #simulado-> fatorar(6)
    A=[]                 #A=[]
    for y in range(2,x): #for y in range(2,6): y=[2,3,4,5]
        while x%y==0:    #enquanto resto da divisao 6/y for 0:
            x=x/y        #x=6/y-> 6/2,6/3,6/4,6/5-> 6/3=3 e 3/3=1, por isso usar while.
            A.append(y)  #A=[6/2,6/3,3/3]=[3,2,1]
    if sum(A)==0:        #se x fosse numero primo, a sua forma fatoriada seria ele mesmo.
        A.append(x)      #se sum(A)==0 i.e, x%y nunca é 0, entao x é primo
    return A             #retorna lista [3,2,1]
MDCeMMC.py: 
# -*- coding: cp1252 -*-
#Importar a Funçao fatorar do Modulo Fatorar.py
from Fatorar import fatorar
#Loop para reiniciar o programa apos terminado
R=raw_input("Digite Sair para sair, ou qualquer outra coisa para continuar: ").lower()
while R!="sair":
    #definir quantos numeros farao parte do calculo
    n=input("Quantos numeros? ")
    N=list(range(n))
    #definir quais numeros
    for i in range(n):
        N[i]=input("Proximo Numero: ")
    #Fatorar esses numeros, salvando em C os valores antigos para uso posterior
    C=N
    N=map(fatorar,(N))
    #Declarar variaveis a serem usadas com seus respectivos valores iniciais
    mdc=1
    mmc=1
    num=2
    #Essa funçao ira obter o maior numero primo de todas as fatoraçoes e colocar
    #o resultado na variavel num
    for z in range(n):
        if N[z][-1]>num:
            num=N[z][-1]
    #Por exemplo, se C=[13,26], entao o maior numero primo é 13, e range vai de 2 a 13+1.
    #Agora as compostas de for sao usadas para obter a quantidade de vezes que um fator i
    #aparece em cada lista N[j], que é a forma fatorada do numero inserido pelo usuario.
    for i in range(2,num+1):
        cont=N[0].count(i)
        for j in range(n):
            if N[j].count(i)>0:
                if N[j].count(i)<cont:
                    cont=N[j].count(i)
            else:
                cont=0
    #se C=[15,30]=[[5*3],[5*3*2]], mdc=1*(5**1)*(3**1)=15
        if i**cont>1:
            mdc*= i**cont
    #MMC
    #x= fatores em comum
    #Se nao houver fatores em comum x=1
    #MMC= (a*b)/x
    X=1
    #obter a*b, sendo a*b armazenado na variavel mmc
    for u in range(len(C)):
        mmc*=C[u]
    #Testar se o fator x aparece em todo N[y], isto é, se x é fator em comum de todos elementos fatorados
    for x in range(2,num+1):
        cont=1 
        for y in range(n):
            if N[y].count(x)==0:
                cont=0
    #Se x for fator em comum, colocar o produto de todos x (todos os fatores em comum) em X
        if cont==1:
            X*=x
    #Dividir mmc por X, obtendo o M.M.C
    mmc=mmc/X
    print "O M.D.C é %d e o M.M.C é %d."%(mdc,mmc)
    R=raw_input("Digite Sair para sair, ou qualquer outra coisa para recomeçar o programa: ").lower()