Суть задания: дать программе 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()