Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- bitset<100010>ck;
- vector<int>prime;
- void sieve(int z)
- {
- ll i,j,k;
- int x=z+1;
- ck.set();
- ck[0]=ck[1]=0;
- for(i=2;i<3;i++){
- for(j=2*2;j<=x;j+=2)ck[j]=0;
- prime.push_back(i);
- }
- for(;i<=x;i+=2)if(ck[i]){
- for(j=i*i,k=2*i;j<=x;j+=k)ck[j]=0;
- prime.push_back(i);
- }
- }
- int main()
- {
- sieve(1e5);
- int i,j,t,x,y,p_cnt;
- bool k;
- ll re;
- scanf("%d",&t);
- while(t--){
- scanf("%d %d",&x,&y);
- for(i=j=1,re=k=p_cnt=0;i<x;){
- while(p_cnt!=y+1&&j<=x){
- if(j==x)k=true;
- if(ck[j])p_cnt++;
- j++;
- }
- while(k||p_cnt!=y&&i<x){
- if(k&&p_cnt<=y)re+=(j-i);
- else re+=(j-i-1);
- if(ck[i])p_cnt--;
- i++;
- if(i==x)k=false;
- }
- }
- printf("%lld\n",re+1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement