利用埃氏筛法的思想预处理出从2~n所有数分解质因数后的结果
作者:
O₂
,
2024-08-24 16:56:52
,
所有人可见
,
阅读 6
#include<algorithm>
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
typedef pair<int,vector<int>>PIV;
const int N=1e5+10;
PIV num[N];
bool st[N];
int n;
void get_primes(){
st[0]=st[1]=true;
for(int i=2;i<=n;i++){
if(!st[i]){
for(int j=i+i;j<=n;j+=i){
st[j]=true;
int val=num[j].first;
while(val%i==0){
val/=i;
num[j].second.push_back(i);
}
num[j].first=val;
}
}
}
}
int main(){
cin>>n;
for(int i=2;i<=n;i++) num[i].first=i;
get_primes();
for(int i=2;i<=n;i++){
if(num[i].first!=1) num[i].second.push_back(num[i].first);
for(auto t:num[i].second) cout<<t<<" ";
cout<<endl;
}
return 0;
}