最后一个点TLE,c++求助

P2043 质因子分解

一点建议 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


|