用素数筛
#include<iostream>
#include<vector>
#include<utility>
using namespace std;
const int N=10000;
vector<bool>isp(N,true);
long x,p=2;
vector<pair<int,int>>st;
long nextp(long p)
{
for(++p;p<N;++p)
if(isp[p])
return p;
};
int main()
{
for(int i=2;i<N;++i)
for(int j=2;i*j<N;++j)
isp[i*j]=false;
cin>>x;
cout<<x<<'=';
if(x<2)cout<<x;
else
{
while(x!=1)
{
if(x%p==0)
{
int cnt=0;
while(x%p==0)++cnt,x/=p;
st.push_back(make_pair(p,cnt));
}
p=nextp(p);
}
for(int i=0;i<st.size();++i)
{
if(i)cout<<'*';
cout<<st[i].first;
if(st[i].second!=1)
cout<<'^'<<st[i].second;
}
}
return 0;
}