一点建议
1. 这里
```
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return 0;
}
```
建议写作
```
for(int i=2;i*i<=n;i++){
if(n%i==0) return 0;
}
```
2. 建议使用埃氏筛,最好欧拉筛
3. 找到一个质因子,使用vector或deque的push_back方法储存
by fengziyi @ 2022-08-24 17:21:48
@[Etic_HAO](/user/735935)
by fengziyi @ 2022-08-24 17:21:59
埃氏筛可以这样,AC的
```cpp
#include<iostream>
#include<algorithm>
int cnt[10005];
void work(int n){
for(int i=2;i<=n;++i){
int tmp=i;
for(int j=2;j<=tmp;++j){
while(tmp%j==0){
cnt[j]++;
tmp/=j;
}
}
}
for(int i=1;i<=n;++i){
if(cnt[i]!=0) std::cout<<i<<" "<<cnt[i]<<std::endl;
}
return;
}
int main(){
int n;
std::cin>>n;
work(n);
return 0;
}
```
by Godiva @ 2022-08-24 17:37:37