import Foundation
func ggT(a: Int, b: Int) -> Int {
/* Die Funktion ggT berechnet den größten gemeinsamen Teiler zweier
Zahlen a und b. Die Zwischenergebnisse und das Endergebnis der Funktion
ggT werden in einer Variable gespeichert. Dafür wird die Variable
resultat deklariert. */
var resultat : Int
/* Im Fall, dass die erste Zahl a gleich 0 ist, ist das Ergebnis gleich b
(der zweiten Zahl). Im Fall, dass a jedoch ungleich 0 ist, wird die ggT
Funktion mit den geänderten beziehungsweise angepassten
Argumenten ggT(b MOD a, a). */
if a == 0 {
resultat = b
} else {
resultat = ggT(a: b % a, b: a)
}
return resultat
}
func kgV(a: Int, b: Int) -> Int {
/* Die Funktion kgV soll das kleinste gemeinsame Vielfach zweier Zahlen
a und b berechnen. Die zwei Zahlen wurden als Argument an die kgV
Funktion übergeben. Um das Ergebnis zu speichern, wird in einer Variable
gespeichert. Dafür wird die Variable resultat deklariert. */
var resultat : Int
/* Um das kgV zu berechnen werden die zwei Zahlen a und b zuerst
multipliziert und das Ergebnis wird dann durch den größten gemeinsamen
Teiler der zwei Zahlen a und b geteilt. Das Ergebnis wird in der
Variablen resultat gespeichert.*/
resultat = a * b / ggT(a: a, b: b)
return resultat
}
/* Main
Das Programm berechnet das kleinste gemeinsame Vielfache, kurz kgV, zweier Zahlen.
Um die erste Zahl zu speichern, wird die Variable A deklariert.*/
var a : Int
// Um die zweite Zahl zu speichern, wird die Variable B deklariert.
var b : Int
// Um das Ergebnis zu speichern, wird die Variable ergebnis deklariert.
var ergebnis : Int
print("Geben Sie die erste Zahl an:")
a = Int(readLine()!)!
print("Geben Sie die zweite Zahl an:")
b = Int(readLine()!)!
/* Die Fallunterscheidung, ob die erste Zahl größer als die zweite Zahl ist,
erleichtert das weitere Vorgehen. Je nach Ergebnis wird Funktion kgV mit den
Argumenten a, b beziehungsweise mit der getauschten Variante b, a aufgerufen.
An dem Ergebnis ändert sich dadurch aber nichts, da kgV(a, b) = kgV(b, a) ist.*/
/* Unabhängig vom Ausgang des Vergleichs wird die Funktion kgV aufgerufen, die
wiederum selbst intern eine weitere Funktion, nämlich ggT (größter gemeinsamer
Teiler) aufruft. Sodass hier eine Funktion aufgerufen wird, die wieder eine
Funktion aufruft, es sind also ineinander verschachtelte Funktionen.*/
if a > b {
ergebnis = kgV(a: a, b: b)
} else {
ergebnis = kgV(a: b, b: a)
}
print("Das kleinste gemeinsame Vielfache ist:")
print(ergebnis)