#include <bits/stdc++.h>
using namespace std;
int max_j,u[100000];
void out()
{
for(int i=1;i<max_j;i++)
{
if(u[i]!=0&&i!=max_j)
{
cout<<i<<"^"<<u[i]<<"*";
}
}
cout<<max_j<<"^"<<u[max_j];
for(int i=0;i<=max_j;i++)
u[i]=0;
}
void s(int a,int j)
{
if(a==1)
{
out();
return;
}
if(a>1)
{
if(a%j==0)
{
max_j=max(max_j,j);
u[j]++;
s(a/j,j);
}
if(a%j!=0)
s(a,j+1);
}
}
int sum(int n)
{
if(n==1||n==0)
return 0;
if(n==2)
return 1;
for(int i=2;i*1<=n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
int halt(int n)
{
if(n>40000000)
{
cout<<"The number is too large!";
return 0;
}
if(sum(n)==1)
cout<<"Yes!"<<endl;
else
cout<<"No!"<<endl;
if(sum(n)==1||n==1||n==0)
{
cout<<endl;
return 0;
}
else
{
cout<<n<<"=";
s(n,2);
cout<<endl<<endl;
}
}
int main()
{
int n=0,t=0,qq=1;
string s;
while(1)
{
t=0;
n=0;
cout<<"Enter the number=";
getline(cin,s);
for(int i=0;i<s.size();i++)
{
if('0'<=s[i]&&s[i]<='9')
{
n=n*10+s[i]-'0';
t++;
}
}
if(t==0)
return 0;
cout<<"Prime? ";
max_j=0;
halt(n);
}
return 0;
}