MLE 蒟蒻在线等 大佬教育
  • 板块P1621 集合
  • 楼主Herbie_ZHB
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/8 18:51
  • 上次更新2023/11/3 11:01:04
查看原帖
MLE 蒟蒻在线等 大佬教育
768325
Herbie_ZHB楼主2023/7/8 18:51
#include<bits/stdc++.h>
using namespace std;
int f[100005],a,b,p,c[100005],v[100005],ans;
bool judge(int x){
	if(x==2)return 1;
	if(x<2)return 0;
	if(x%2==0)return 0;
	for(int i=3;i<=sqrt(x);i+=2)
	    if(x%i==0)return 0;
	return 1; 
}
int find(int x){
	if(f[x]==x)return f[x];
	return f[x]=find(x);
}
int main(){
	cin>>a>>b>>p;
	for(int i=1;i<=b;i++)f[i]=i;
	for(int i=p;i<=b;i++){
		if(c[i])continue;
		if(judge(i)){
			c[i]=1;
			for(int j=2;j*i<=b;j++){
				c[i*j]=1;
			    if(j*i<a)continue;
			    int x=find(i),y=find(i*j);
			    if(x!=y)f[x]=y;
			}
		}
	}
	for(int i=a;i<=b;i++)
	    if(!v[find(i)]){
	    	v[find(i)]=1;
	    	ans++;
		}
	cout<<ans<<endl;
}
2023/7/8 18:51
加载中...