Habe mich heute mal mit ein bissel Mathe und VB beschäftigt. Dabei bin ich auf den Euklidischen Algorithmus und Primfaktor gestoßen. Im Web gibt es wieder X-Lösungsansätze. Habe dann einen gefunden, der zwar in C# aber nur rudimentär behandelt wurde.
Habe das dann versucht in VB umzuwandeln.
Spoiler anzeigen
Habe das dann versucht in VB umzuwandeln.
VB.NET-Quellcode
-
- Public Class frm_main
- Dim a, b, neu_a As Double
- Dim rest As Double = 0
- Dim zwischenergebnis_ggt As Double = 0
- Dim ggteiler As Double
- Dim kgvielfache As Double
- Dim zahl2prim As Double
- Dim zwischenergebnis_kgv As Double
- Private Sub btn_berechnen_Click(sender As Object, e As EventArgs) Handles btn_berechnen.Click
- lb_ausgaben.Items.Clear()
- lb_primfaktor.Items.Clear()
- GGT_Ausgabe()
- primfaktor()
- End Sub
- Private Sub ZwischenschritteGGT()
- zwischenergebnis_ggt = CDbl(zwischenergebnis_ggt.ToString("N2"))
- lb_ausgaben.Items.Add(a & " geteilt durch " & b & " = " & zwischenergebnis_ggt & " Rest " & rest)
- End Sub
- Private Sub ZwischenschritteKGV()
- lb_ausgaben.Items.Add(a & " mal " & b & " = " & zwischenergebnis_ggt & " geteilt durch " & ggteiler)
- End Sub
- Private Sub GGT_Ausgabe()
- GGT_EuklidscherAlgorithmus()
- lb_ausgaben.Items.Add(Environment.NewLine)
- lb_ausgaben.Items.Add("Größter gemeinsamer Teiler: " & ggteiler)
- lb_ausgaben.Items.Add(Environment.NewLine)
- KGV_EuklidscherAlgorithmus()
- lb_ausgaben.Items.Add(Environment.NewLine)
- lb_ausgaben.Items.Add("Kleinstes gemein. Vielefache: " & kgvielfache)
- End Sub
- Private Function GGT_EuklidscherAlgorithmus() As Integer
- a = CInt(tb_zahl_a.Text)
- b = CInt(tb_zahl_b.Text)
- If a <= 0 OrElse b <= 0 Then : a = 0 : Return CInt(a) : Exit Function : End If
- If a < b Then neu_a = b : b = a : a = neu_a
- While b <> 0
- rest = a Mod b
- zwischenergebnis_ggt = a / b
- ZwischenschritteGGT()
- a = b
- b = rest
- End While
- ggteiler = a
- Return CInt(ggteiler)
- End Function
- Private Function KGV_EuklidscherAlgorithmus() As Integer
- a = CInt(tb_zahl_a.Text)
- b = CInt(tb_zahl_b.Text)
- kgvielfache = a * b / ggteiler
- zwischenergebnis_ggt = a * b
- ZwischenschritteKGV()
- Return CInt(kgvielfache)
- End Function
- Private Sub primfaktor()
- zahl2prim = CInt(a)
- If zahl2prim = 1 Then
- lb_primfaktor.Items.Add("Zahl ist nicht weiter teilbar.")
- Else
- While zahl2prim Mod 2 = 0
- zwischenergebnis_kgv = CInt(zahl2prim / 2)
- lb_primfaktor.Items.Add(zahl2prim & " : " & 2 & " = " & zwischenergebnis_kgv)
- zahl2prim = CInt(zahl2prim / 2)
- End While
- Dim i As Int64 = 3
- While i <= zahl2prim
- While zahl2prim Mod i = 0
- zwischenergebnis_kgv = CInt(zahl2prim / i)
- lb_primfaktor.Items.Add(zahl2prim & " : " & i & " = " & zwischenergebnis_kgv)
- zahl2prim = CInt(zahl2prim / i)
- End While
- i = i + 2
- End While
- End If
- End Sub
- Private Sub tb_zahl_a_Click(sender As Object, e As EventArgs) Handles tb_zahl_a.Click
- tb_zahl_a.Clear()
- End Sub
- Private Sub tb_zahl_b_Click(sender As Object, e As EventArgs) Handles tb_zahl_b.Click
- tb_zahl_b.Clear()
- End Sub
- End Class
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.