用素数筛
#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; }