Submission

Status:

(-SSS)(SSS)(SSS)

Subtask/Task Score:

{0/40}{0/30}{0/30}

Score: 0

User: TonnamSora

Problemset: Twin, Cousin, and Sexy Prime

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-13 14:14:21

#include <bits/stdc++.h>
using namespace std;

int main() {
    int l, u;
    cin >> l >> u;

    // สร้าง sieve
    vector<bool> isPrime(u + 1, true);
    isPrime[0] = isPrime[1] = false;
    for (int i = 2; i * i <= u; i++) {
        if (isPrime[i]) {
            for (int j = i * i; j <= u; j += i) {
                isPrime[j] = false;
            }
        }
    }

    // เก็บ prime ทั้งหมดในช่วง [l, u]
    vector<int> primes;
    for (int i = l; i <= u; i++) {
        if (isPrime[i]) primes.push_back(i);
    }

    int twin = 0, cousin = 0, sexy = 0;

    // นับคู่ prime ที่ห่างกัน 2, 4, 6
    for (int i = 0; i < (int)primes.size(); i++) {
        for (int j = i + 1; j < (int)primes.size(); j++) {
            int diff = primes[j] - primes[i];
            if (diff == 2) twin++;
            else if (diff == 4) cousin++;
            else if (diff == 6) sexy++;
            else if (diff > 6) break; // ถ้าเกิน 6 ก็ไม่ต้องเช็กต่อ
        }
    }

    cout << twin << "\n" << cousin << "\n" << sexy;
}