TLE三个 求调```cpp
#include<bits/stdc++.h>
using namespace std;
int sn[88888];
int shift(int a[],int b,int n){
int max=0;
for(int i=0;i<n;i++){
if(a[i]==b){
max++;
}
}
return max;
}
int main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
unsigned long long n,nn=0;
cin>>n;
for(int i=2;i<=n;i++){
while(n%i==0){
sn[nn]=i;
n/=i;
nn++;
}
}
for(int i=0;i<nn;i++){
if(i==nn-1){
if(shift(sn,sn[i],nn)==1){
cout<<sn[i];
}else{
cout<<sn[i]<<"^"<<shift(sn,sn[i],nn);
}
}else{
if(shift(sn,sn[i],nn)==1){
cout<<sn[i]<<" * ";
}else{
cout<<sn[i]<<"^"<<shift(sn,sn[i],nn)<<" * ";
}
}
i+=shift(sn,sn[i],nn)-1;
}
return 0;
}