#include
#include
#include
using namespace std;
vectorprime(50000,1);
int main() {
for(int i=2;i*i<50000;i++)
for(int j=2;j*i<50000;j++)
prime[j*i]=0; //50000内任意可以分解成j*i的数都不是素数,而且其中一个素数i必定小于sqrt(50000)
long int a;
scanf("%ld",&a);
printf("%ld=",a);
if(a==1)printf("1");
bool state=false;
for(int i=2;i<50000&&a>2;i++){
int cnt=0,flag=0;
while(prime[i]==1&&a%i==0){ //从小到大可以分解出因数i,i可能不止一个,一直循环除i
cnt++;
a=a/i;
flag=1;
}
if(flag){
if(state)printf("*"); //第二个因数开始带*
printf("%d",i);
state=true;
}
if(cnt>=2)printf("^%d",cnt);
}
if(a>1)printf("%s%ld",state?"*":"",a); //state表示可以分解,a是最后一个质数因子,否则直接打印n
system("pause");
return 0;
}