Python, <strike>140</strike> <strike>135</strike> 133 chars
---

    M=N=input()
    s=''
    f=1
    while f<4**8:
     f+=1;e=0
     while N%f<1:e+=1;N/=f
     if e:s+='*%d'%f+'^%d'%e*(e>1)
    print M,'=',(s+'*%d'%N*(N>1))[1:]