➤ Problem Link : FRQPRIME
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int sieve[100001];
int arr[100001];
#define ll long long int
void initSieve(ll n)
{
memset(sieve,1,sizeof(sieve));
sieve[1]=0;
for(ll i=2;i<=sqrt(n);i++)
{
if(sieve[i])
{
for(ll j=i*i;j<=n;j+=i)
sieve[j]=0;
}
}
}
void setArr(ll n)
{
ll k=0;
for(ll i=1;i<=n;i++)
{
if(sieve[i])
arr[i]=++k;
else
arr[i]=k;
}
}
int main()
{
initSieve(100001);
setArr(100001);
ll t;
cin>>t;
while(t--)
{
ll n,k,temp,ans=0;
cin>>n>>k;
for(ll i=2;i<=n;i++)
{
// cout<<sieve[i]<<" ";
ll l;
if(sieve[i])
l=k+arr[i]-1;
else
l=k+arr[i];
temp=lower_bound(arr+i,arr+100001,l)-arr;
if(temp > n)
break;
// cout<<temp<<endl;
ans+=n-temp+1;
}
cout<<ans<<endl;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
