-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path7.py
43 lines (32 loc) · 903 Bytes
/
7.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def solve(n : int) -> int:
# prime number theorem states that number of primes less than n is ~ n/ln(n)
# therefore, the nth prime number is upper bounded by ~ n^2
array = [True] * n * n
count = 0
for num in range(2, len(array)):
if array[num]:
count += 1
if count == n:
return num
cur = num * 2
while (cur < len(array)):
array[cur] = False
cur += num
if __name__ == "__main__":
result = solve(10001)
print(result)
def test_basic():
result = solve(1)
assert(result == 2)
def test_small():
result = solve(2)
assert(result == 3)
def test_medium():
result = solve(3)
assert(result == 5)
def test_medium2():
result = solve(4)
assert(result == 7)
def test_six():
result = solve(6)
assert(result == 13)