B4272 [蓝桥杯青少年组省赛 2023] 质因数的个数
B4272
思路
利用埃氏筛,不用内层循环优化的埃氏筛。这样每个质数的所有倍数都会被遍历到。
利用这个性质,开一个数组记录每个数字的质因数个数。
代码
复杂度自己算
我没算复杂度,本来以为过不了
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+10;
int na[maxn];
int l,r,ans;
int main(){
std::ios::sync_with_stdio(0);
cin>>l>>r;
for(int i=2;i<=r;i++){
if(!na[i]) for(int j=i*2;j<=r;j+=i){//这里不要使j=i*i
int k=j;//一个合数可能会反复出现这个质因子
while(k%i==0){
k/=i;
na[j]++;
}
}
if(i>=l) ans=max(ans,na[i]);
}cout<<ans;
return 0;
}
推荐一下吧qwq QAQ

浙公网安备 33010602011771号