Finding Perfect Squares
Windows only
Problem
In mathematics, a perfect square is an integer that is the square of an integer; in other words, it is the product of some integer with itself. For example, 9 is a perfect square, since it can be written as 3 × 3. How can one determine whether or not an integer is a perfect square in RhinoScript?
Solution
Here is an example of a function that determines whether or not a number is a perfect square:
Function IsPerfectSquare(n)
Dim h, t
IsPerfectSquare = False ' default return value
h = n And &HF ' last hexadecimal "digit"
If (h > 9) Then Exit Function ' return immediately in 6 cases out of 16
If (h <> 2 And h <> 3 And h <> 5 And h <> 6 And h <> 7 And h <> 8) Then
t = Int(Rhino.Floor(Sqr(n)+0.5))
If (t*t = n) Then IsPerfectSquare = True
End If
End Function
You can test the above function as follows:
For i = 0 To 60^2
If IsPerfectSquare(i) Then
Call Rhino.Print(CStr(i) & "^2 = " & CStr(i^2))
End If
Next