3 of 4 Incorporate BlaXspirit's ideas.

Python, 140 135 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)
if N>1:s+='*%d'%N
print M,'=',s[1:]