#include<stdio.h>struct factor{int x, cnt;}fac[10];boolisprime(int n){if(n <=1)returnfalse;for(longlong i =2; i * i <= n; i++){if(n % i ==0)returnfalse;}returntrue;}intmain(){int prime[100010], n, pnum =0, cnt =0;for(int i =1; i <100010; i++){//素数表if(isprime(i)==true)prime[pnum++]= i;}scanf("%d",&n);if(n ==1)printf("1=1");else{int num =0;printf("%d=", n);for(int i =0; i < pnum && prime[i]<= n; i++){if(n % prime[i]==0){
fac[num].x = prime[i];
fac[num].cnt =0;while(n % prime[i]==0){
n /= prime[i];
fac[num].cnt++;}
num++;if(n ==1)break;}}for(int i =0; i < num; i++){if(fac[i].cnt ==1)printf("%d", fac[i].x);elseprintf("%d^%d", fac[i].x, fac[i].cnt);if(i != num -1)printf("*");}}return0;}