# kgv



## DarkSean (8. Januar 2006)

Hallo,
Für die Schule muss ich ein Programm schreiben, das das kleinste gemeinsame Vielfache von zwei Zahlen berechnet. Kann mir da einer helfen? WIe geht das?
Sean


----------



## mage (9. Januar 2006)

Du musst einer der Algorithmen implementieren.
Wiki: kgV


----------



## DarkSean (9. Januar 2006)

Na ja, hab's jetzt so gelöst:
	
	
	



```
Dim f1 As Integer
Dim f2 As Integer
Private Sub Command1_Click()
    If IsNumeric(Text1.Text) And IsNumeric(Text2.Text) Then
        If Text1.Text = 0 Or Text2.Text = 0 Then
            MsgBox ("Das kgV kann nur mit ganzen Zahlen ungleich 0 gebildet werden")
            Exit Sub
        Else
            f1 = CInt(Text1.Text)
            f2 = CInt(Text2.Text)
        End If
    Else
        MsgBox ("Es müssen ganze Zahlen für beide Zahlen eingesetzt werden")
        Exit Sub
    End If
kgv = f1 * f2
    While kgv Mod f1 <> 0 Or kgv Mod f2 <> 0
        If kgv = 0 Then
            kgv = f1 * f2
        Else
            kgv = kgv - 1
        End If
    Wend
Text3.Text = kgv
End Sub
```


----------



## mage (10. Januar 2006)

Sieht doch schon ganz gut aus. Du sollest es nur ein wenig lesbar schreiben

```
Private Sub Command1_Click()
    Dim f1 As Integer
    Dim f2 As Integer

 If Not IsNumeric(Text1.Text) Or Not IsNumeric(Text2.Text) Then
        MsgBox ("Es müssen ganze Zahlen für beide Zahlen eingesetzt werden")
        Exit Sub
  End If

  f1 = CInt(Text1.Text)
  f2 = CInt(Text2.Text)

  If f1 = 0 Or f2 = 0 Then
      MsgBox ("Das kgV kann nur mit ganzen Zahlen ungleich 0 gebildet werden")
      Exit Sub
   End if

    kgv = f1 * f2
    
    While kgv Mod f1 <> 0 Or kgv Mod f2 <> 0
        If kgv = 0 Then
            kgv = f1 * f2
        Else
            kgv = kgv - 1
        End If
    Wend

    Text3.Text = CStr(kgv)

End Sub
```

Sauberer wär es generell, wenn du dafür eine Funktion schreiben würdest.

Text3.Text = CStr( *fKGV*(CInt(Text1.Text),CInt(Text2.Text))


----------

