python3 或者 pypy3 是不是没机会过这题了?
查看原帖
python3 或者 pypy3 是不是没机会过这题了?
551790
freeyourmind楼主2022/2/21 04:05
import sys
input = sys.stdin.buffer.readline
from array import array

n, q = map(int, input().split())

isPrime = array('Q', [0xffffffffffffffff] * ((n + 63) // 64))
primes = array('L')
for x in range(2, n):
    idx, bit = divmod(x, 64)
    if isPrime[idx] & (1 << bit): primes.append(x)
    for p in primes:
        v = x * p
        if v > n: break
        idx, bit = divmod(v, 64)
        isPrime[idx] -= (1 << bit)
        if x % p == 0: break

for _ in range(q):
    x = int(input())
    print(primes[x - 1])
2022/2/21 04:05
加载中...