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

posted @ 2025-07-16 21:18  STD//  阅读(113)  评论(0)    收藏  举报