Суть задания: дать программе 1000 раз простое число, порядковый номер которого она выдала import socket import math SERVER_HOST = "nfb-tasks.ru" SERVER_PORT = 45596 def generate_primes(count): limit = int(100000 * math.log(100000) * 1.2) primes = [] sieve = [True] * (limit + 1) sieve[0] = sieve[1] = False for num in range(2, limit + 1): if sieve[num]: primes.append(num) for multiple in range(num * num, limit + 1, num): sieve[multiple] = False if len(primes) >= count: break return primes[:count] def main(): primes = generate_primes(100000) if primes is None: return with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket: try: client_socket.connect((SERVER_HOST, SERVER_PORT)) print(f"Подключено к серверу {SERVER_HOST}:{SERVER_PORT}") response = client_socket.recv(1024).decode('utf-8') print(response) while True: response = client_socket.recv(1024).decode('utf-8') print(response) if not response or "Игра окончена!" in response: break try: n = int(response.split()[-1].strip(':')) except ValueError: print("Ошибка при извлечении номера простого числа.") break if 1 <= n <= len(primes): prime_number = primes[n-1] client_socket.sendall(f"{prime_number}\n".encode('utf-8')) else: print(f"Простое число под номером {n} не найдено.") break except ConnectionError: print("Ошибка подключения к серверу.") except KeyboardInterrupt: print("Программа прервана пользователем.") if __name__ == "__main__": main()