赞
踩
- #include <iostream>
- #include<cstdio>
- #include<algorithm>
- #include<cstring>
- #include<cmath>
- #include<queue>
- using namespace std;
- typedef long long ll;
-
- const int inf=2147483647;
- const int maxn=1e5+100;
- int pri[maxn];
- int ans[maxn*10];
- /*
- 复杂度大约是2e6,思维真的是强
- 我只是想到了筛,但是一看到1e9,自己就蒙了
- 还是固化的思维太重,不去看别的条件,要知道考试
- 是不会让你见到原题的,只会有新的思维,这些都是铺垫
- */
-
- int main()
- {
- ll l,r;
- scanf("%lld %lld",&l,&r);
- int m=sqrt(r+0.5);
- for(ll i=2;i<=m;i++){
- if(pri[i])continue;
- for(ll j=i*i;j<=m;j+=i)
- pri[j]=1;
- ll pos=l/i;
- if(l%i)pos++;
- for(ll j=max(i+i,pos*i);j<=r;j+=i)
- ans[j-l]=1;
- // printf("i:%lld pos:%lld\n",i,pos);
- }
- //printf("m:%d\n",m);
- // for(int i=1;i<=m;i++)printf("i:%d %d\n",i,pri[i]);
- int cnt=0;
- for(int i=0;i<=r-l;i++)if(!ans[i])cnt++;
- printf("%d\n",cnt);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。