Aufgabe: 2520 ist die kleinste Zahl, die durch jede Zahl von 1-10 ohne Rest geteilt werden kann. Was ist die kleinste positive Zahl, die durch alle Zahlen von 1-20 ohne Rest teilbar ist? Es soll die Brute Force Variante programmiert werden.
Lösung:
-module(kleinsterAllesTeiler). -compile(export_all). kleinsterAllesTeiler(X) -> kleinsterAllesTeiler(X, 2, X). kleinsterAllesTeiler(X, Teiler, KleinsteSuperZahl) when (Teiler > X) -> KleinsteSuperZahl; kleinsterAllesTeiler(X, Teiler, KleinsteSuperZahl)-> %io:fwrite("X: ~w \t Teiler: ~w \t KleinsteSuperZahl: ~w\n", [X, Teiler, KleinsteSuperZahl]), case teilbar(KleinsteSuperZahl, Teiler) of true ->kleinsterAllesTeiler(X, Teiler + 1, KleinsteSuperZahl); false ->kleinsterAllesTeiler(X, 2, KleinsteSuperZahl + 1) end. teilbar(X, Teiler) when (X rem Teiler) == 0 -> true; teilbar(X, Teiler) -> false.
Ergebnis: 232.792.560 (ca. 10s Programmlaufzeit, sehr respektabel). Mit der auskommentierten Bildschirmausgabe terminiert das Programm innerhalb von Tagen by the way:)