Private Function getnum(n As Long) As Long
Dim i As Long
Dim j As Long
Dim numtemp As Long
For i = ((10 ^ n) - 1) To 1 Step -1
    'Debug.Print i
    For j = 1 To n
       numtemp = CLng(Left(CStr(i), j))
       If (numtemp Mod j) <> 0 Then
           GoTo cannot
       End If
    Next j
 getnum = numtemp
 Exit Function
cannot:
DoEvents
Next i
End Function
方法一般大家交流交流

解决方案 »

  1.   

    9
    98
    987
    9876
    98765
    987654
    9876545
    98765456
    987654564Private Function getnum(n As Long) As Long
    Dim i As Long
    Dim j As Long
    Dim numtemp As Long
    For i = ((10 ^ n) - 1) To (10 ^ n) / 10 Step -1
        Debug.Print i
        For j = 1 To n
           numtemp = CLng(Left(CStr(i), j))
           If (numtemp Mod j) <> 0 Then
               GoTo cannot
           End If
        Next j
     getnum = numtemp  '返回得数
     Exit Function
    cannot:
    DoEvents
    Next i
    getnum = -1    '没有返回-1
    End Function
      

  2.   

     Dim i As Double
     Dim mylen As Long
     Dim myvalue As Double
     Dim mytemp As Double
     i = 0
     mylen = 0
     myvalue = 0
     mytemp = 0
        For i = 1235 To 100000
        mytemp = 0
        mylen = Len(CStr(i))
            While (mylen > 0)
         
                myvalue = i \ (10 ^ (mylen - 1))
                If (myvalue Mod Len(CStr(myvalue))) = 0 Then
                     mytemp = mytemp + 1
                End If
                
                mylen = mylen - 1
            Wend
            If mytemp = Len(CStr(i)) Then
                Debug.Print "RS:" + CStr(i)
            
            End If
            
       Next
      
      

  3.   

    RS:76205
    RS:76240
    RS:76245
    RS:76280
    RS:76285
    RS:76520
    RS:76525
    RS:76560
    RS:76565
    RS:76800
    RS:76805
    RS:76840
    RS:76845
    RS:76880
    RS:76885
    RS:78000
    RS:78005
    RS:78040
    RS:78045
    RS:78080
    RS:78085
    RS:78320
    RS:78325
    RS:78360
    RS:78365
    RS:78600
    RS:78605
    RS:78640
    RS:78645
    RS:78680
    RS:78685
    RS:78920
    RS:78925
    RS:78960
    RS:78965
    RS:80120
    RS:80125
    RS:80160
    RS:80165
    RS:80400
    RS:80405
    RS:80440
    RS:80445
    RS:80480
    RS:80485
    RS:80720
    RS:80725
    RS:80760
    RS:80765
    RS:82200
    RS:82205
    RS:82240
    RS:82245
    RS:82280
    RS:82285
    RS:82520
    RS:82525
    RS:82560
    RS:82565
    RS:82800
    RS:82805
    RS:82840
    RS:82845
    RS:82880
    RS:82885
    RS:84000
    RS:84005
    RS:84040
    RS:84045
    RS:84080
    RS:84085
    RS:84320
    RS:84325
    RS:84360
    RS:84365
    RS:84600
    RS:84605
    RS:84640
    RS:84645
    RS:84680
    RS:84685
    RS:84920
    RS:84925
    RS:84960
    RS:84965
    RS:86120
    RS:86125
    RS:86160
    RS:86165
    RS:86400
    RS:86405
    RS:86440
    RS:86445
    RS:86480
    RS:86485
    RS:86720
    RS:86725
    RS:86760
    RS:86765
    RS:88200
    RS:88205
    RS:88240
    RS:88245
    RS:88280
    RS:88285
    RS:88520
    RS:88525
    RS:88560
    RS:88565
    RS:88800
    RS:88805
    RS:88840
    RS:88845
    RS:88880
    RS:88885
    RS:90000
    RS:90005
    RS:90040
    RS:90045
    RS:90080
    RS:90085
    RS:90320
    RS:90325
    RS:90360
    RS:90365
    RS:90600
    RS:90605
    RS:90640
    RS:90645
    RS:90680
    RS:90685
    RS:90920
    RS:90925
    RS:90960
    RS:90965
    RS:92120
    RS:92125
    RS:92160
    RS:92165
    RS:92400
    RS:92405
    RS:92440
    RS:92445
    RS:92480
    RS:92485
    RS:92720
    RS:92725
    RS:92760
    RS:92765
    RS:94200
    RS:94205
    RS:94240
    RS:94245
    RS:94280
    RS:94285
    RS:94520
    RS:94525
    RS:94560
    RS:94565
    RS:94800
    RS:94805
    RS:94840
    RS:94845
    RS:94880
    RS:94885
    RS:96000
    RS:96005
    RS:96040
    RS:96045
    RS:96080
    RS:96085
    RS:96320
    RS:96325
    RS:96360
    RS:96365
    RS:96600
    RS:96605
    RS:96640
    RS:96645
    RS:96680
    RS:96685
    RS:96920
    RS:96925
    RS:96960
    RS:96965
    RS:98120
    RS:98125
    RS:98160
    RS:98165
    RS:98400
    RS:98405
    RS:98440
    RS:98445
    RS:98480
    RS:98485
    RS:98720
    RS:98725
    RS:98760
    RS:98765还可以大下去
      

  4.   

    楼上的都只能做到N<12的情况,以下的程序可以做>12的情况
    运行时先添加一个commandbutton及一个textbox
    Dim Number() As Long '存放数字
    Dim Maxnum As Long  '对应于NPrivate Sub Command1_Click()
    Maxnum = 20
    Call getnum(1)
    Dim i As Long
    For i = 1 To UBound(Number)
        Text1 = Text1 + CStr(Number(i))
    NextEnd SubPrivate Sub Form_Load()
    ReDim Number(0)
    Number(0) = 0
    End SubPublic Function getnum(Currentnum As Long) As Boolean
    Dim temp As Long
    Dim i As Long
    Dim j As Long
    Dim remain As Long
    Dim Flag As Boolean
    Dim tempflag As Boolean
    remain = 0
    For j = 1 To Currentnum - 1
        remain = ((remain * 10 + Number(j)) Mod Currentnum)
    Next
    Flag = False
    For i = 9 To 0 Step -1
        If Currentnum = 1 And i = 0 Then Exit For
        temp = ((remain * 10 + i) Mod Currentnum)
        If temp = 0 Then
            ReDim Preserve Number(Currentnum)
            Number(Currentnum) = i
            Flag = True
            If Currentnum = Maxnum Then
                getnum = True
                Exit Function
            End If
            tempflag = getnum(Currentnum + 1)
            If tempflag Then
                getnum = True
                Exit For
            Else
                getnum = False
            End If
        End If
    Next
    If Flag = False Then getnum = False
    End Function
      

  5.   

    没看清楚 ,原来是求最大位数
    修改如下Dim Number() As Long '存放数字
    Dim result() As LongPrivate Sub Command1_Click()
    ReDim Number(0)
    Number(0) = 0
    ReDim result(0)
    result(0) = 0
    Call getnum(1)Dim i As Long
    For i = 1 To UBound(result)
        Text1 = Text1 + CStr(result(i))
    Next
    Text2 = CStr(UBound(result))
    End SubPublic Function getnum(Currentnum As Long) As Boolean
    Dim temp As Long
    Dim i As Long
    Dim j As Long
    Dim remain As Long
    Dim Flag As Boolean
    Dim tempflag As Boolean
    remain = 0
    For j = 1 To Currentnum - 1
        remain = ((remain * 10 + Number(j)) Mod Currentnum)
    Next
    Flag = False
    For i = 9 To 0 Step -1
        If Currentnum = 1 And i = 0 Then Exit For
        temp = ((remain * 10 + i) Mod Currentnum)
        If temp = 0 Then
            ReDim Preserve Number(Currentnum)
            Number(Currentnum) = i
            Flag = True
            tempflag = getnum(Currentnum + 1)
            If tempflag Then
                getnum = True
                Exit For
            Else
                getnum = False
            End If
        End If
    Next
    If Flag = False Then getnum = False
    If UBound(Number) > UBound(result) Then
        ReDim result(UBound(Number))
        For i = 1 To UBound(Number)
        result(i) = Number(i)
        Next
    End IfEnd Function
      

  6.   

    '下面的函数求最大位数的最大值,给分吧。
    Function GetNumber() as long
        dim M as long
        dim N as long
        dim p as integer
        dim I as integer
        dim MyFlag as boolean
        M=9
        N=2
        do
           for i=9 to 0 step -1
              if M*10+I mod N then
                 m=m*10+I
                 MyFlag=true
                 exit for  
              end if    
           next i
           if myflag=false then
              exit do
           end if
           n=n+1 
           doevents
        loop
        GetNumber=M
    End Function
      

  7.   

    dbspro(冷锋):你调试过吗?好像不对阿
      

  8.   

    wjying(J)的方法好,那26位以后的方法有没有办法呢?
      

  9.   

     wjying(J) 可以告诉我你的信箱吗?
      

  10.   

    wjying
    我算出来的结果和你一样,只是我用的是c语言
    你计算需要时间吗?