# Solution ## `is_prime` Zunächst überprüfen wir alle Randbedingungen für `n < 2` ```python if n < 2: return False ``` wir wissen laut definition dass hier die Funktion zu `False` evaluieren soll. Jetzt wollen wir durch alle Zahlen bis zu unserer Zahl `n` iterieren und schauen ob sich `n` noch anders teilen lässt ```python for num in range(2, n): if n % num == 0: return False ``` Wenn `n` durch `num` teilbar ist können wir `False` zurückgeben, da `n` nicht nur durch sich selbst teilbar ist. Jetzt geben wir noch `True` zurück wenn wir durch die For-Schleife iteriert sind und haben die Funktion. ```python def is_prime(n: int) -> bool: if n < 2: return False for num in range(2, n): if n % num == 0: return False return True ``` ## `next_prime` Wir inkrementieren solange `n` bis `is_prime` erfüllt ist und geben diesen Wert dann zurück. Iterativ: - wir speichern uns `n` zwischen und inkrementieren initial - nun testen wir in einer `While`-Schleife `num` bis diese eine Primzahl ist und geben sie zurück ```python num += 1 while not is_prime(num): num += 1 return num ``` Rekursiv: - Unsere Abbruchbedingung ist, dass `n + 1` eine Primzahl ist - Ansonsten müssen wir rekursiv `n` inkrementieren bis wir eine Zahl erreichen die Prim ist ```python if is_prime(n + 1): return n + 1 else: return next_prime(n + 1) ```