Rubrik: Variablen/Strings · Algorithmen/Mathematik | VB-Versionen: VB2005, VB2008 | 02.09.09 |
Ermitteln aller echten Teiler einer natürlichen Zahl II Erweiterung des vorigen Tipps um eine Funktion, die aus allen Teilern die 'Pärchen' bildet, deren Multiplikation die Originalzahl als Produkt ergibt. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 10.107 |
ohne Homepage | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Nachfolgend stellen wir Ihnen eine Erweiterung des Tipps Ermitteln aller echten Teiler einer natürlichen Zahl vor.
Die heutige Variante basiert auf der ersten. Sie ermittelt aus allen Teilern alle 'Pärchen', deren Multiplikation miteinander als Produkt dir Ursprungszahl ergibt. Diese Pärchen werden in einem 2-dimensionalen Ergebnisfeld bereit gestellt.
Function pairDividers(ByVal z As Integer) As Array Dim fInt(), pInt(,) As Integer Dim i, j, k, p As Integer fInt = allDividers(z) ' Primzahl? If fInt Is Nothing Then Return Nothing k = 0 For j = 0 To Int(fInt.Length / 2) For i = Int(fInt.Length / 2) To fInt.Length - 1 p = fInt(i) * fInt(j) If p = z Then ReDim Preserve pInt(1, k) pInt(0, k) = fInt(i) pInt(1, k) = fInt(j) k += 1 End If Next Next Return pInt End Function
Function allDividers(ByVal z As Integer) As Array Dim fInt() As Integer Dim j As Integer = 0 For i As Integer = 2 To z - 1 If z Mod i = 0 Then ReDim Preserve fInt(j) fInt(j) = i j += 1 End If Next Return fInt End Function
Aufrufbeispiel:
Dim pInt(,) As Integer = pairDividers(256) If Not IsNothing(pInt) Then ListBox1.Items.Clear() For i As Integer = 0 To (pInt.Length / 2) - 1 ListBox1.Items.Add(pInt(0, i) & " x " & pInt(1, i)) Next End If
Anmerkung:
Wenn beim Aufruf von allDividers "Nothing" herauskommt, ist es eine Primzahl gewesen.