我正在努力解决一个难题 问题陈述是:找到由两个3位数字的乘积制成的最大回文。
我是新手,所以请帮忙!
答案 0 :(得分:0)
这是一个基本的大纲,可以帮助你:
Dim max As Integer = 999 * 999
Dim min As Integer = 100 * 100
Dim result As Integer
While max > min AndAlso Not (IsPalindrome(max) AndAlso Not IsPrime(max)) Then
max -= 1
End While
result = max
然后你需要的功能:
Public Function IsPalindrome(ByVal value As Integer) As Boolean
Dim str1 As String = value.ToString()
Dim chars() As Char = str1.ToCharArray()
Array.Reverse(chars)
Dim str2 As New String(chars)
Return (str1 = str2)
End Function
Public Function IsPrime(ByVal value As Integer) As Boolean
If value Mod 2 = 0 Then
Return False
End If
For i = 3 To value / 2 + 1 Step 2
If value Mod i = 0 Then
Return False
End If
Next
Return True
End Function
答案 1 :(得分:0)
这是用于解决此问题的C / C ++代码,您需要做两件事 - 1)将其转换为VB代码并且2)实现isPalindrome()函数。
int highestPalindrome = 12321; // 111 * 111
for( int i = 111; i <= 999; i++) {
for( int j = 111; j<= 999; j++) {
int value = i*j;
if( isPalindrome(value) )
if( value > highestPalindrome )
highestPalindrome = value;
}
}
您可以在Stack Overflow上找到用于编写isPalindrome()函数的NUMEROUS解决方案。