Mithilfe solcher Aufgaben kannst du üben eigenen Code zu schreiben und danach natürlich die Lösung anschauen ob die Aufgabe richtig verstanden wurde . Wichtig hierbei ist natürlich, dass es nicht die richtige Lösung gibt und die Lösung von mir lediglich dazu dient eine bereitzustellen und Anreize zu bieten, sollte man mal nicht weiter kommen.
Herr Müller ist ein fauler Mathematik Lehrer. Er stellt den Schülern folgende Aufgabe: Löse die folgenden Aufgaben und erfinde 3 weitere im selben Stil:
\begin{eqnarray} 660 * 1365 &=& \\ 693 * 1300 &=& \\ 819 * 1100 &=& \\ \end{eqnarray}
Schreibe ein Programm welches ähnliche Aufgaben geordnet nach der Größe des ersten Faktors ausgibt. Dabei soll das Ergebnis immer 900900 sein und die Faktoren ganzzahlig.
Solltest du starke Probleme mit der Aufgabe haben, lies dir bitte nochmal die unten verlinkten Artikel durch. Zum Ende des Artikels
Zuerst können wir uns eine Schleife erstellen, welche alle Zahlen von 1 bis zu unserer zahl durchgeht um alle einmal miteinander zu multiplizieren und zu schauen ob unsere Zahl herauskommt. Da wir die anderen Zahl natürlich nicht haben müssen wir anders herum vorgehen. Wir Dividieren unsere Zahl immer ganzzahlig durch den aktuellen Wert unserer Schleife. Wenn das Ergebnis 0 ist, ist die Zahl ganzzahlig teilbar und eine unserer gesuchten.
1package main
2
3func main() {
4 erg := 900900
5
6 for i := 1; i <= erg; i++ {
7 if erg%i == 0 {
8 fmt.Println(i, " * ", erg/i, " = ", erg)
9 }
10 }
11}
Jetzt müssen nur noch die Doppelten Zahlen weg. Das können wir tun, indem wir vorher noch überprüfen ob unsere aktuelle Zahl in der Schleife kleiner als 900900 durch unsere Zahl. Sobald diese Zahl größer wird bekommen wir nämlich nur noch doppelte Zahlen angezeigt. Wir erweitern unseren Code also noch um eine weitere Bedingung
1package main
2
3func main() {
4 erg := 900900
5
6 for i := 1; i <= erg; i++ {
7 if erg%i == 0 {
8 if i < erg/i {
9 fmt.Println(i, " * ", erg/i, " = ", erg)
10 } else {
11 break
12 }
13 }
14 }
15}