Submission

Status:

(-SSS)(SSS)(SSS)

Subtask/Task Score:

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

Score: 0

User: peilin

Problemset: Twin, Cousin, and Sexy Prime

Language: c

Time: 0.012 second

Submitted On: 2025-10-12 15:41:45

#include <stdio.h>
#include <stdbool.h>
#include <string.h>

#define MAX_U 70000000

bool isPrime[MAX_U + 1];

void sieve(int n) {
    memset(isPrime, true, sizeof(isPrime));
    isPrime[0] = isPrime[1] = false;
    for (int p = 2; p * p <= n; p++) {
        if (isPrime[p]) {
            for (int i = p * p; i <= n; i += p)
                isPrime[i] = false;
        }
    }
}

int main() {
    int l, u;
    scanf("%d %d", &l, &u);

    sieve(u);

    int twin_count = 0;
    int cousin_count = 0;
    int sexy_count = 0;

    for (int i = l; i <= u; i++) {
        if (isPrime[i]) {
            if (i + 2 <= u && isPrime[i + 2]) {
                twin_count++;
            }
            if (i + 4 <= u && isPrime[i + 4]) {
                cousin_count++;
            }
            if (i + 6 <= u && isPrime[i + 6]) {
                sexy_count++;
            }
        }
    }

    printf("%d\n", twin_count);
    printf("%d\n", cousin_count);
    printf("%d\n", sexy_count);

    return 0;
}