Sprache: VB
Dieses Snippet ermittelt den kleinsten natürlichen Teiler > 1 einer ganzen Zahl n. Für gerade n ist der Rückgabewert stets 2.
Function sm_div(ByVal n As Integer) As Integer
For Each p As Byte In {2, 3, 5}
If n Mod p = 0 Then Return p
Next
Dim dif As Byte() = {6, 4, 2, 4, 2, 4, 6, 2}, m As Short = 7, i As Short = 1
While m * m <= n
If n Mod m = 0 Then Return m
m += dif(i Mod 8)
i += 1
End While
Return n
End Function
Function sm_div(ByVal n As Integer) As Integer
For Each p As Byte In {2, 3, 5}
If n Mod p = 0 Then Return p
Next
Dim dif As Byte() = {6, 4, 2, 4, 2, 4, 6, 2}, m As Short = 7, i As Short = 1
While m * m <= n
If n Mod m = 0 Then Return m
m += dif(i Mod 8)
i += 1
End While
Return n
End Function
Alte URL:
/snippet/kleinster-natuerlicher-teiler-1/1471
Die Überschrift und die Lösung ist ein wenig eigenartig. Kleinster gemeinsamer Teiler ist hierbei immer die 1. Wozu benötigt man den kleinsten gemeinsamen Teiler, der nicht 1 ist?
1 ausgeschlossen natürlich. Ist selten von Nöten, stimmt, aber wer’s braucht, hat’s nun hier. Beispielsweise verwende ich diese Funktion beim ermitteln der Primfaktorzerlegung (folgt in Kürze als Snippet).