如下:
#include<bits/stdc++.h>
using namespace std;
long long n;
vector<long long>v;
bool isPrime(int n){
if(n<=3){
return n>1;
}
if(n%6!=1&&n%6!=5) {
return false;
}
int sq=(int)sqrt(n);
for(int i=5;i<=sq;i+=6){
if(n%i==0||n%(i+2)==0){
return false;
}
}
return true;
}
int main(){
cin>>n;
for(int i=2;i<=n/i;i++){
if(n%i!=0)continue;
if(isPrime(i)){
v.push_back(i);
}
if(isPrime(n/i)){
v.push_back(n/i);
}
}
for(int i=0;i<v.size();i++){
if(i!=0)cout<<" * ";
int x=0,y=n;
while(y%v[i]==0){
y/=v[i];
x++;
}
if(x==1)cout<<v[i];
else cout<<v[i]<<'^'<<x;
}
return 0;
}