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;

}