HELP ME PLS NOW !!!!!!!!!!
C++ HOẶC PYTHON
Với hai số nguyên dương 𝑘, 𝑝, số 𝑝 được gọi là số 𝑝𝑟𝑖𝑚𝑒
𝑘 nếu một trong các số 𝑝 − 𝑘, 𝑝 − 𝑘 +
1, … , 𝑝, 𝑝 + 1, … , 𝑝 + 𝑘 là số nguyên tố. Ví dụ, các số 4, 5, 10 là số 𝑝𝑟𝑖𝑚𝑒^1
Yêu cầu: Cho 𝑛 cặp số nguyên dương, cặp số thứ 𝑖 là (𝑘𝑖
, 𝑝𝑖), hãy cho biết 𝑝𝑖 (1 ≤ 𝑖 ≤ 𝑛) có phải
𝑝𝑟𝑖𝑚𝑒
𝑘𝑖 hay không.
Input
- Dòng đầu chứa số nguyên 𝑛;
- Dòng thứ 𝑖 (1 ≤ 𝑖 ≤ 𝑛) trong 𝑛 dòng sau chứa hai số nguyên dương 𝑘𝑖
, 𝑝𝑖 (𝑘𝑖 ≤ 𝑝𝑖 ≤ 106).
Output
- Gồm 𝑛 dòng, dòng thứ 𝑖 ghi số 1 nếu 𝑝𝑖
là số 𝑝𝑟𝑖𝑚𝑒
𝑘𝑖
, ghi số 0 trong trường hợp ngược lại.
Input
4
1 15
1 4
1 81
2 81
Output
0
1
0
1
Ràng buộc
- Subtask 1 (50%): 𝑛 = 1; 𝑘1 = 1;
- Subtask 2 (25%): 𝑛 = 1;
- Subtask 3 (25%): 𝑛 ≤ 106
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
M = 2 * 10**6
is_prime = [True] * (M + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(M**0.5) + 1):
if is_prime[i]:
for j in range(i*i, M + 1, i):
is_prime[j] = False
primes = [0]*(M +1)
for i in range(2, M + 1):
primes[i] = primes[i - 1] + is_prime[i]
n = int(input())
for i in range(n):
k,p = map(int, input().split())
if primes[p - k] != primes[p + k]:
print(1)
else:
print(0)
Hãy giúp mọi người biết câu trả lời này thế nào?
from sys import stdin
input = stdin.readline
N = 10**6 + 10
f = [1]*N
f[0] = f[1] = 0
for i in range(2, int(N**0.5)+1):
if f[i]:
for j in range(i*i, N, i):
f[j] = 0
n = int(input())
for _ in range(n):
k, p = map(int, input().split())
ok = 0
for i in range(p - k, p + k + 1):
if i >= 2 and f[i]:
ok = 1
break
print(ok)
`$\color{darkviolet}{T}\color{violet}{h}$ $\color{plum}{ủ}\color{mediumpurple}{y}$
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin