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
