Python

Задача по python

Простое число

По введённому натуральному числу K
K
, не превосходящему 1000000
1
000
000
, выдать K
K
-е по счёту простое число.

Входные данные

Задано натуральное число K
K
.

Выходные данные

Выведите K
K
-е простое число.
Я там лихо лоханулся, за что дико извиняюсь :)
Здесь привожу вторую попытку на С++
 #include  
#include
#include

using namespace std;

class Primes {
public:
using prime_t = unsigned;

explicit Primes(const size_t length) : length(length)
{
primes.resize(length);
fill();
}

prime_t get(const size_t position)
{
if (!position || position > length)
{
return numeric_limits::max();
}
return primes[position - 1];
}
private:
size_t length;
vector primes;

bool is_prime(const prime_t x)
{
static const prime_t t = 30;

if (x < t)
{
if (x == 3) return true;
if (x == 5) return true;
if (x == 7) return true;
if (x == 11) return true;
if (x == 13) return true;
if (x == 17) return true;
if (x == 19) return true;
if (x == 23) return true;
if (x == 29) return true;
}

if (0 == x % 3) return false;
if (0 == x % 5) return false;
if (0 == x % 7) return false;
if (0 == x % 11) return false;
if (0 == x % 13) return false;
if (0 == x % 17) return false;
if (0 == x % 19) return false;
if (0 == x % 23) return false;
if (0 == x % 29) return false;

auto n = static_cast(sqrt(x));
prime_t a = 31, b = 37, c = 41, d = 43, e = 47, f = 49, g = 53, h = 59;

while (h
KH
Kuba Huligan ****
73 166
Лучший ответ
Сергей М. Никуда не годится. При k = 200 000 время теста:
мисс Райт: 7 мс
у меня: 80 мс
у вас: 1000 мс

ps (конечно если это не троллинг :)
 def is_prime(n): 
if n