找出所有各位数字互不相同的四位数,该数本身为素数,且各位数字均为素数.求代码!!!

解决方案 »

  1.   

    如果 1 也算素数的话(否则题名不成立)
    Private Sub Command1_Click()
        Dim i, j, k As Integer
        Dim blGetDate As Boolean
        Dim A(16) As Integer
        A(0) = 1357
        A(1) = 1537
        A(2) = 1573
        A(3) = 1753
        A(4) = 3157
        A(5) = 3517
        A(6) = 3571
        A(7) = 3751
        A(8) = 5137
        A(9) = 5173
        A(10) = 5317
        A(11) = 3571
        A(12) = 7153
        A(13) = 7351
        A(14) = 7513
        A(15) = 7531
        For i = 0 To 15
            For j = 3 To Sqr(A(i))
                If A(i) Mod j = 0 Then
                    blGetDate = True
                    Exit For
                End If
            Next j
            If Not blGetDate Then
                k = k + 1
                Debug.Print "素数 "; k; "  "; A(i)
            Else
                blGetDate = False
            End If
        Next i
    End Sub运行结果:
    素数  1    1753 
    素数  2    3517 
    素数  3    3571 
    素数  4    3571 
    素数  5    7351
      

  2.   

    再修改,运行结果不变
    Private Sub Command1_Click()
        Dim i, j, k As Integer
        Dim blGetDate As Boolean
        Dim A(18) As Integer
        A(0) = 1357
        A(1) = 1537
        A(2) = 1573
        A(3) = 1753
        A(4) = 3157
        A(5) = 3517
        A(6) = 3571
        A(7) = 3751
        A(8) = 5137
        A(9) = 5173
        A(10) = 5317
        A(11) = 5371
        A(12) = 5713
        A(13) = 5731
        A(14) = 7153
        A(15) = 7351
        A(16) = 7513
        A(17) = 7531
        For i = 0 To 15
            For j = 3 To Sqr(A(i))
                If A(i) Mod j = 0 Then
                    blGetDate = True
                    Exit For
                End If
            Next j
            If Not blGetDate Then
                k = k + 1
                Debug.Print "素数 "; k; "  "; A(i)
            Else
                blGetDate = False
            End If
        Next i
    End Sub
      

  3.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim SingleNumber(0 To 4) As Integer
        SingleNumber(0) = 1
        SingleNumber(1) = 2
        SingleNumber(2) = 3
        SingleNumber(3) = 5
        SingleNumber(4) = 7
        
        Dim Results() As Integer
        
        Dim length As Integer
        
      
        Dim temp As Integer
        
        Dim i As Integer, j As Integer, k As Integer, l As Integer
        
        
        For i = 0 To 4
               
            For j = 0 To 4
                
                If j <> i Then
                  
                  For k = 0 To 4
                  
                      If (k <> i) And (k <> j) Then
                      
                          For l = 0 To 4
                          
                              If (l <> i) And (l <> j) And (l <> k) Then
                              
                                  temp = SingleNumber(i) * 1000 + SingleNumber(j) * 100 + SingleNumber(k) * 10 + SingleNumber(l)
                  
                                  If IsPrimeNumber(temp) Then
                                                                              
                                      length = length + 1
                  
                                      ReDim Preserve Results(length - 1)
                      
                                      Results(length - 1) = temp
          
                                  End If
                              End If
        
                          Next l
                     End If
                     
                  Next k
                  
                End If
            Next j
                
        Next iIf length <> 0 Then    For i = 0 To UBound(Results)
            Debug.Print Results(i)
        Next
    End If
        
    End Sub
    '**************************************
    '判断一个数是否为素数
    '*************************************
    Public Function IsPrimeNumber(ByVal num As Integer) As Boolean    If num > 0 Then
        
            IsPrimeNumber = True
            
            If ((num Mod 2) = 0) And (num <> 2) Then
                IsPrimeNumber = False
                Exit Function
            ElseIf (num Mod 3) = 0 And (num <> 3) Then
                IsPrimeNumber = False
                Exit Function
            ElseIf (num Mod 5) = 0 And (num <> 5) Then
                IsPrimeNumber = False
                Exit Function
            ElseIf (num Mod 7) = 0 And (num <> 7) Then
                IsPrimeNumber = False
                Exit Function
            End If
        End If
        
    End Function