Imports System
Public Class Program
Public Shared Function is_prime(ByVal n As Integer) As Boolean
If n = 2 Then
Return True
End If
If n < 2 OrElse n Mod 2 = 0 Then
Return False
End If
Dim i As Integer = 3
While i * i <= n
If n Mod i = 0 Then
Return False
End If
i += 2
End While
Return True
End Function
Public Shared Function cyclically_rotate_left(ByVal n As Integer) As Integer
Dim m As Integer = n
Dim p As Integer = 1
While m >= 10
p = p * 10
m = m \ 10
End While
Return CInt((m + 10 * (n Mod p)))
End Function
Public Shared Function is_circular_prime(ByVal n As Integer) As Boolean
If Not is_prime(n) Then
Return False
End If
Dim rotated_n As Integer = cyclically_rotate_left(n)
While rotated_n <> n
If rotated_n < n OrElse Not is_prime(rotated_n) Then
Return False
End If
rotated_n = cyclically_rotate_left(rotated_n)
End While
Return True
End Function
Public Shared Sub Main()
Dim n As Integer = 2
Dim i As Integer = 0
While i < 18
If is_circular_prime(n) Then
If i > 0 Then
Console.Write(", ")
End If
Console.Write(n)
i = i + 1
End If
n = n + 1
End While
End Sub
End Class
' run:
'
' 2, 3, 5, 7, 11, 13, 17, 37, 79, 113, 197, 199, 337, 1193, 3779, 11939, 19937, 193939
'