added tut05
This commit is contained in:
@ -0,0 +1,54 @@
|
|||||||
|
# Tutorium 05 - 17.11.2023
|
||||||
|
|
||||||
|
## Korrektur [Exercise-04](https://proglang.informatik.uni-freiburg.de/teaching/info1/2023/exercise/sheet04.pdf)
|
||||||
|
|
||||||
|
### Punkteverteilung
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Häufige Fehler
|
||||||
|
|
||||||
|
- Type Annotations
|
||||||
|
- Print-Statements, Top-Level Statements in Logik/nicht in
|
||||||
|
|
||||||
|
```python
|
||||||
|
if __name__ == "__main__":
|
||||||
|
assert # some test
|
||||||
|
```
|
||||||
|
|
||||||
|
- Ich kann euch prinzipiell immer 0 Punkte geben wenn Ihr etwas verwendet, was nicht Teil der Vorlesung war
|
||||||
|
- Lest die Aufgabenstellungen/Hinweise auf dem Blatt
|
||||||
|
- Benennt eure Dateien/Methoden richtig
|
||||||
|
|
||||||
|
## Vorrechnen
|
||||||
|
|
||||||
|
1. `lists.py`
|
||||||
|
a. `even`:
|
||||||
|
b. `min`:
|
||||||
|
c. `max`:
|
||||||
|
2. `euler.py`
|
||||||
|
a. `fac`:
|
||||||
|
b. `approx_e`:
|
||||||
|
3. `binary.py`
|
||||||
|
a. `to_num`:
|
||||||
|
b. `stream_to_nums`:
|
||||||
|
|
||||||
|
## [Exercise-05](https://proglang.informatik.uni-freiburg.de/teaching/info1/2023/exercise/sheet05.pdf)
|
||||||
|
|
||||||
|
- Abgabe Montag 09:00 Uhr im [git](https://git.laurel.informatik.uni-freiburg.de/)
|
||||||
|
- Probleme beim installieren von `pygame`?
|
||||||
|
|
||||||
|
## Übungsaufgaben
|
||||||
|
|
||||||
|
### Annotations
|
||||||
|
|
||||||
|
#### [Primes](./src/primes.py)
|
||||||
|
|
||||||
|
Schreibe eine Funktion `prime_factorization` die eine Ganzzahl `n` entgegen nimmt und alle Primfaktoren berrechnet und die gegebene Zahl `n` in einen Paar mit den Primfaktoren als Liste zurückgibt. Denkt dabei an die richtigen Type Annotations
|
||||||
|
|
||||||
|
```python
|
||||||
|
def prime_factorization(n):
|
||||||
|
pass
|
||||||
|
```
|
||||||
|
|
||||||
|
#### [Dataclass](./src/data_classes.py)
|
||||||
|
34
Tutorium/tut05/src/primes.py
Normal file
34
Tutorium/tut05/src/primes.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
def prime_factorization(num: int) -> tuple[int, list[int]]:
|
||||||
|
# our list of primefactors
|
||||||
|
primefactors: list[int] = []
|
||||||
|
# our first prime number
|
||||||
|
prime: int = 2
|
||||||
|
# we don't want to modify our number and copy it to `n`
|
||||||
|
n: int = num
|
||||||
|
|
||||||
|
# iterate until we find the last step the square of
|
||||||
|
# our prime is bigger than our rest number
|
||||||
|
while n != 1:
|
||||||
|
# if our number is dividable by our prime
|
||||||
|
if n % prime == 0:
|
||||||
|
# we can add the prime to our primefactors
|
||||||
|
primefactors.append(prime)
|
||||||
|
# and divide our rest number by the prime number
|
||||||
|
n //= prime
|
||||||
|
else:
|
||||||
|
# increment until next prime number
|
||||||
|
prime += 1
|
||||||
|
|
||||||
|
# finally return our tuple with our number and primefactors
|
||||||
|
return (num, primefactors)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
assert (sol := (100, [2, 2, 5, 5])) == (
|
||||||
|
res := prime_factorization(100)), f"{res} is not {sol}"
|
||||||
|
assert (sol := (69, [3, 23])) == (
|
||||||
|
res := prime_factorization(69)), f"{res} is not {sol}"
|
||||||
|
assert (sol := (31, [31])) == (
|
||||||
|
res := prime_factorization(31)), f"{res} is not {sol}"
|
||||||
|
assert (sol := (123490823022, [2, 3, 3, 3, 3, 7, 7, 7, 1123, 1979])) == (
|
||||||
|
res := prime_factorization(123490823022)), f"{res} is not {sol}"
|
Reference in New Issue
Block a user