Feedback

Ganzzahlige Wurzel

Sprache: VB

Diese Funktion ermittelt jene Ganzzahl, welche kleiner oder gleich der Wurzel der übergebenen Zahl n ist. Beispiel: isr(38) = 6, da gilt: 6² = 36 < 38 und 7² = 49 > 36 isr(121) = 11, da gilt: 11² = 121
Function isr(ByVal n As Integer) As Integer
    Dim res As Integer = 0, l As Integer = 1073741824 '= 2^30
    While l > n
        l >>= 2
    End While

    While l
        If n >= res + l Then
            n -= res + l
            res += l << 1
        End If
 
       res >>= 1
        l >>= 2
    End While

    Return res
End Function
Function isr(ByVal n As Integer) As Integer
    Dim res As Integer = 0, l As Integer = 1073741824 '= 2^30
    While l > n
        l >>= 2
    End While

    While l
        If n >= res + l Then
            n -= res + l
            res += l << 1
        End If
 
       res >>= 1
        l >>= 2
    End While

    Return res
End Function