SP11736 PTIME - Prime Time 题解
Upd:更新了标点符号问题。
因为
根据同底数幂的乘法我们可以得出,
首先我们进行质数筛,将一定范围内的质数用欧拉筛全部筛出来。之后对
放代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int main(){
ios::sync_with_stdio(false);
int n; cin>>n;
vector<bool> ip(N+1,true);
ip[1]=false;
vector<int> p;
for(int i=2;i<=N;i++){
if(ip[i])p.emplace_back(i);
for(int j:p){
if(1ll*i*j>N)break;
ip[i*j]=false;
if(!(i%j))break;
}
} // 质数筛
vector<int> x(p.size());
for(int i=1;i<=n;i++){
int w=i;
for(int j=0;p[j]<=i;j++)
while(w%p[j]==0)x[j]++,w/=p[j];
} // 暴力分解质因数
for(int i=0;;i++){
if(!x[i])break;
else if(i)cout<<" * ";
cout<<p[i]<<'^'<<x[i];
} // 输出
return 0;
}