Cod sursa(job #2449250)

Utilizator voyagerSachelarie Bogdan voyager Data 19 august 2019 00:38:13
Problema Ciurul lui Eratosthenes Scor 30
Compilator py Status done
Runda Arhiva educationala Marime 0.52 kb
#!/usr/bin/env python3

import sys
sys.stdout = open('ciur.out', 'w')

with open('ciur.in', 'r') as f:
    n = int(f.readline())

    num = (n - 1) // 2 + 1
    p = bytearray((n + 1) // 16 + 1)
    for i in range(3, int(n ** 0.5) + 1, 2):
        idx = i // 2
        if not p[idx >> 3] & (1 << (idx & 7)):
            for j in range(i * i, n + 1, 2 * i):
                idx = j // 2
                if not p[idx >> 3] & (1 << (idx & 7)):
                    p[idx >> 3] |= 1 << (idx & 7)
                    num -= 1
    print(num)