Feedback

VB - Kleinster natürlicher Teiler > 1

Veröffentlicht von am 21.11.2010
(1 Bewertungen)
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
Abgelegt unter kleinster, smallest, Teiler, divisor, Mathe, math.

2 Kommentare zum Snippet

RoSi schrieb am 21.11.2010:
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?
Klemens Nanni schrieb am 22.11.2010:
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).
 

Logge dich ein, um hier zu kommentieren!