' FB 1.05.0 Win64 Function romanEncode(n As Integer) As String If n < 1 OrElse n > 3999 Then Return "" '' can only encode numbers in range 1 to 3999 Dim roman1(0 To 2) As String = {"MMM", "MM", "M"} Dim roman2(0 To 8) As String = {"CM", "DCCC", "DCC", "DC", "D", "CD", "CCC", "CC", "C"} Dim roman3(0 To 8) As String = {"XC", "LXXX", "LXX", "LX", "L", "XL", "XXX", "XX", "X"} Dim roman4(0 To 8) As String = {"IX", "VIII", "VII", "VI", "V", "IV", "III", "II", "I"} Dim As Integer thousands, hundreds, tens, units thousands = n \ 1000 n Mod= 1000 hundreds = n \ 100 n Mod= 100 tens = n \ 10 units = n Mod 10 Dim roman As String = "" If thousands > 0 Then roman += roman1(3 - thousands) If hundreds > 0 Then roman += roman2(9 - hundreds) If tens > 0 Then roman += roman3(9 - tens) If units > 0 Then roman += roman4(9 - units) Return roman End Function Dim a(2) As Integer = {1990, 2008, 1666} For i As Integer = 0 To 2 Print a(i); " => "; romanEncode(a(i)) Next Print Print "Press any key to quit" Sleep