Python, 138 chars
---

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