(Б. Баобаба) Числа-близнецы — это такие простые числа, которые отличаются друг от друга на \(2.\) Найдите все пары чисел-близнецов в диапазоне \([3~000~000; \, 10~000~000].\) В ответе запишите количество найденных пар и среднее арифметическое последней пары.
Решение:
Python
def sieve(n):
nums = [True] * (n + 1)
nums[0] = nums[1] = False
primes = []
lim = int(n**0.5) + 1
for i in range(2, n + 1):
if nums[i]:
primes.append(i)
if i < lim:
for j in range(i * i, n + 1, i):
nums[j] = False
return primes
pr = sieve(10**7)
q = 0
avg = 0
for x, y in zip(pr, pr[1:]):
if x < 3_000_000:
continue
if y - x == 2:
q += 1
avg = (x + y) // 2
print(q, avg)
Ответ: \(38048 \,\, 9999972\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене