Jede Zahl kann in ein bis auf Reihenfolge eindeutiges Produkt von Primzahlen zerlegt werden. Diese Darstellung wird Primfaktorzerlegung genannt und ist in der Mathematik von elementarer Bedeutung (siehe auch: https://de.wikipedia.org/wiki/Primfaktorzerlegung). Zum Beispiel kann die Zahl 42 als Primfaktorzerlegung 42 = 2 · 3 · 7 geschrieben werden. 

1. Schreiben Sie ein Unterprogramm prime_factors(n), das die Primfaktorzerlegung einer Zahl rekursiv berechnet und in einer sortierten Liste zurück gibt. Beachten Sie, dass hierbei Primfaktoren auch mehrfach auftreten können ! 

2. 
Schreiben Sie ein Unterprogramm ggT(a, b), das den größten gemeinsamen Teiler von zwei Zahlen a und b zurück gibt. 

3. Schreiben Sie ein Unterprogramm kgV(a, b), das das kleinste gemeinsame Vielfache zweier Zahlen a und b zurück gibt. 

4. Schreiben Sie ein Unterprogramm
proper_divisors(a), dem die Primfaktorzerlegung einer Zahl in Form einer Liste a übergeben wird (wie in Teilaufgabe 1 erzeugt), daraus alle (echten) Teiler der Zahl berechnet und sie in einer sortierten Liste zurück gibt. 

Hinweis: Der Head wird automatisch vor Ihren abgegebenen Code eingefügt, der Foot dahinter. Bitte kopieren Sie ihn nicht in Ihre Abgabe!

Scaffold Head
Scaffold Foot
Start time:
Fr 01 Dez 2017 15:13:13
End time:
Do 07 Dez 2017 14:00:29
General test timeout:
60.0 seconds

Tests

Comment prefix #
Given input
20728
42
36
(42, 16)
(14, 0)
(23424, 2352)
[2, 2, 2, 2591]
[2, 2, 3, 3]
Expected output
# 2.1
[2, 2, 2, 2591]
[2, 3, 7]
[2, 2, 3, 3]
# 2.2
2
14
48
# 2.3
336
0
1147776
# 2.4
[1, 2, 4, 8, 2591, 5182, 10364]
[1, 2, 3, 4, 6, 9, 12, 18]