求1~n每个数的正约数集合-倍数法
以d为正约数的数有从1到n扫描每个数,将每个数的倍数的正约数集合都加入d。
时间复杂度:
vector<int> a[50010];
void get_div(int n){
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n/i;j++)
a[i*j].push_back(i);
}
}
以d为正约数的数有从1到n扫描每个数,将每个数的倍数的正约数集合都加入d。
时间复杂度:
vector<int> a[50010];
void get_div(int n){
for(int i = 1;i<=n;i++){
for(int j = 1;j<=n/i;j++)
a[i*j].push_back(i);
}
}