aboutsummaryrefslogtreecommitdiff
path: root/challenge-155/lubos-kolouch/python/ch-1.py
blob: 83820190dea934913194e2c0a9d8a714d36a898c (plain)
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
""" Challenge 155 LK Python Task 1"""
from sympy import isprime, nextprime


def get_pn(what: int) -> int:
    """Get the pn needed for the formula"""
    last_num = 1
    pn = 1

    for _ in range(1, what + 1):
        last_num = nextprime(last_num)

        pn *= last_num
    return pn


def find_fortunate_num(what: int) -> int:
    """Find the respective fortunate number"""

    num = 2
    while not isprime(what + num):
        num += 1

    return num


def get_n_fortunate_nums(what: int) -> list:
    """Find the task solution"""

    fortunate_nums = []

    # * 2 number should be more than enough
    for i in range(1, what * 2):
        pn = get_pn(i)

        fortunate = find_fortunate_num(pn)
        fortunate_nums.append(fortunate)

    fortunate_nums = list(sorted(set(fortunate_nums)))
    return fortunate_nums[0 : what + 1]


assert get_n_fortunate_nums(7) == [3, 5, 7, 13, 17, 19, 23, 37]