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
方法一般大家交流交流
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
方法一般大家交流交流
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
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
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还可以大下去
运行时先添加一个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
修改如下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
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
我算出来的结果和你一样,只是我用的是c语言
你计算需要时间吗?