线性筛(map)
查看原帖
线性筛(map)
317400
Foggy_night楼主2023/11/22 22:32
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
map<int, bool>a;
map<int, int>prime;
int main(){
	int m = 0, l, r;
	scanf("%d%d", &l, &r);
	if(l == 1)
		l = 2;
	if(r == 1){
		printf("0");
		return 0;
	}
	for(int i = l; i <= r; i++){//欧拉筛 
		if(!a[i])
			prime[m++] = i;
		for(int j = 0; j < m && i*prime[j] < r; j++){
			a[i*prime[j]] = 1;
			if(!i%prime[j]) // 避免重复筛选 
				break; 
		}
	}
	printf("%d", m); 
	return 0;
}
2023/11/22 22:32
加载中...