2025-03-31 17:17:27 -05:00

54 lines
1.2 KiB
Python

# n is the largest number prime pair we need
def prime_pairs(n):
if n <= 0:
return []
limit = 1000
primes = []
sieve = [True] * (limit + 1)
sieve[0] = sieve[1] = False
prime_pairs = []
while True:
print(len(sieve))
for p in range(2, int(limit**0.5) + 1):
if sieve[p]:
for i in range(p * p, limit + 1, p):
sieve[i] = False
for p in range(2, limit + 1):
if sieve[p]:
primes.append(p)
if len(primes) > 1:
if primes[-1] - primes[-2] == 2 and (primes[-2], primes[-1]) not in prime_pairs:
prime_pairs.append((primes[-2], primes[-1]))
if len(prime_pairs) >= n:
break
limit *= 2
sieve.extend([True] * (limit - len(sieve) + 1))
print(prime_pairs)
return prime_pairs
def main():
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
primes_list = prime_pairs(max(nums))
for num in nums:
print(f'{primes_list[num - 1][0]} {primes_list[num - 1][1]}')
if __name__ == '__main__':
main()