就是数论中的求约数个数稍微改一下就可以了
#include<iostream>
#include<map>
using namespace std;
typedef long long LL;
map<int,int> h;
int main()
{
LL N,n;cin>>N;n=N;
if(N==1)
{
cout<<"1=1";
return 0;
}
for(int i=2;i<=N/i;i++)
{
while(N%i==0)
{
N/=i;
h[i]++;
}
}
if(N>1) h[N]++;
cout<<n<<"=";
int f=0;
for(auto it:h)
{
if(!f)
{
f=1;
if(it.second>1)
cout<<it.first<<"^"<<it.second;
else cout<<it.first;
}
else
{
if(it.second>1)
cout<<"*"<<it.first<<'^'<<it.second;
else cout<<'*'<<it.first;
}
}
}