added loops

This commit is contained in:
2024-01-29 19:09:42 +01:00
parent 01c9aff07d
commit 39e3c38a94
11 changed files with 230 additions and 0 deletions

View File

@ -0,0 +1,63 @@
# 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)
```