added loops
This commit is contained in:
63
loops/ex01/solution/README.md
Normal file
63
loops/ex01/solution/README.md
Normal 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)
|
||||
```
|
Reference in New Issue
Block a user