Submission
Status:
(PPPP)(PPP)(PPP)
Subtask/Task Score:
{40/40}{30/30}{30/30}
Score: 100
User: Nuttykub
Problemset: Twin, Cousin, and Sexy Prime
Language: cpp
Time: 0.650 second
Submitted On: 2026-10-05 20:45:22
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll n,k;
ll twinprime=0,cousinprime=0,sexyprime=0;
vector<ll> prime;
cin>>n>>k;
vector<bool> isprime(k+7,true);
vector<bool> havetwin(k+7,false);
vector<bool> havecousin(k+7,false);
vector<bool> havesexy(k+7,false);
isprime[0]=isprime[1]=false;
for (int i=2;i<=k+6;i++){
if (!isprime[i]) continue;
for (int j=2*i;j<=k+6;j+=i){
isprime[j]=false;
}
}
for (int i=max((ll)0,n-7);i<=k+6;i++){
if(isprime[i]) prime.push_back(i);
}
for (int i=0;i<prime.size();i++){
for (int j = i+1;j < prime.size();j++){
if (prime[j]-prime[i]==2){
havetwin[prime[i]]=true;
havetwin[prime[j]]=true;
}
else if (prime[j]-prime[i]==4) {
havecousin[prime[i]]=true;
havecousin[prime[j]]=true;
}
else if (prime[j]-prime[i]==6){
havesexy[prime[i]]=true;
havesexy[prime[j]]=true;
}
else if (prime[j]-prime[i]>6) break;
}
}
for (int i=n;i<=k;i++){
if(!isprime[i]) continue;
if (havetwin[i]) twinprime++;
if (havecousin[i]) cousinprime++;
if (havesexy[i]) sexyprime++;
}
cout << twinprime << endl << cousinprime << endl << sexyprime;
}