数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
楼主: ysr

几个vb小程序

[复制链接]
 楼主| 发表于 2023-2-10 01:05 | 显示全部楼层
/0 /1 /1 /2 /3 /5 /8 /13 /21 /34
/55 /89 /144 /233 /377 /610 /987 /1597 /2584 /4181
/6765 /10946 /17711 /28657 /46368 /75025 /121393 /196418 /317811 /514229
/832040 /1346269 /2178309 /3524578 /5702887 /9227465 /14930352 /24157817 /39088169 /63245986
/102334155 /165580141 /267914296 /433494437 /701408733 /1134903170 /1836311903 /2971215073 /4807526976 /7778742049
/12586269025 /20365011074 /32951280099 /53316291173 /86267571272 /139583862445 /225851433717 /365435296162 /591286729879 /956722026041
/1548008755920 /2504730781961 /4052739537881 /6557470319842 /10610209857723 /17167680177565 /27777890035288 /44945570212853 /72723460248141 /117669030460994
/190392490709135 /308061521170129 /498454011879264 /806515533049393 /1304969544928657 /2111485077978050 /3416454622906707 /5527939700884757 /8944394323791464 /14472334024676221
/23416728348467685 /37889062373143906 /61305790721611591 /99194853094755497 /160500643816367088 /259695496911122585 /420196140727489673 /679891637638612258 /1100087778366101931 /1779979416004714189
/2880067194370816120 /4660046610375530309 /7540113804746346429 /12200160415121876738 /19740274219868223167 /31940434634990099905 /51680708854858323072 /83621143489848422977 /135301852344706746049 /218922995834555169026
/354224848179261915075 /573147844013817084101 /927372692193078999176 /1500520536206896083277 /2427893228399975082453 /3928413764606871165730 /6356306993006846248183 /10284720757613717413913 /16641027750620563662096 /26925748508234281076009
/43566776258854844738105 /70492524767089125814114 /114059301025943970552219 /184551825793033096366333 /298611126818977066918552 /483162952612010163284885 /781774079430987230203437 /1264937032042997393488322 /2046711111473984623691759 /3311648143516982017180081
/5358359254990966640871840 /8670007398507948658051921 /14028366653498915298923761 /22698374052006863956975682 /36726740705505779255899443 /59425114757512643212875125 /96151855463018422468774568 /155576970220531065681649693 /251728825683549488150424261 /407305795904080553832073954
/659034621587630041982498215 /1066340417491710595814572169 /1725375039079340637797070384 /2791715456571051233611642553 /4517090495650391871408712937 /7308805952221443105020355490 /11825896447871834976429068427 /19134702400093278081449423917 /30960598847965113057878492344 /50095301248058391139327916261
/81055900096023504197206408605 /131151201344081895336534324866 /212207101440105399533740733471 /343358302784187294870275058337 /555565404224292694404015791808 /898923707008479989274290850145 /1454489111232772683678306641953 /2353412818241252672952597492098 /3807901929474025356630904134051 /6161314747715278029583501626149
/9969216677189303386214405760200 /16130531424904581415797907386349 /26099748102093884802012313146549 /42230279526998466217810220532898 /68330027629092351019822533679447 /110560307156090817237632754212345 /178890334785183168257455287891792 /289450641941273985495088042104137 /468340976726457153752543329995929 /757791618667731139247631372100066
/1226132595394188293000174702095995 /1983924214061919432247806074196061 /3210056809456107725247980776292056 /5193981023518027157495786850488117 /8404037832974134882743767626780173 /13598018856492162040239554477268290 /22002056689466296922983322104048463 /35600075545958458963222876581316753 /57602132235424755886206198685365216 /93202207781383214849429075266681969
/150804340016807970735635273952047185 /244006547798191185585064349218729154 /394810887814999156320699623170776339 /638817435613190341905763972389505493 /1033628323428189498226463595560281832 /1672445759041379840132227567949787325 /2706074082469569338358691163510069157 /4378519841510949178490918731459856482 /7084593923980518516849609894969925639 /11463113765491467695340528626429782121
/18547707689471986212190138521399707760 /30010821454963453907530667147829489881 /48558529144435440119720805669229197641 /78569350599398894027251472817058687522 /127127879743834334146972278486287885163 /205697230343233228174223751303346572685 /332825110087067562321196029789634457848 /538522340430300790495419781092981030533 /871347450517368352816615810882615488381 /1409869790947669143312035591975596518914
/2281217241465037496128651402858212007295 /3691087032412706639440686994833808526209 /5972304273877744135569338397692020533504 /9663391306290450775010025392525829059713 /15635695580168194910579363790217849593217 /25299086886458645685589389182743678652930 /40934782466626840596168752972961528246147 /66233869353085486281758142155705206899077 /107168651819712326877926895128666735145224 /173402521172797813159685037284371942044301
/280571172992510140037611932413038677189525 /453973694165307953197296969697410619233826 /734544867157818093234908902110449296423351 /1188518561323126046432205871807859915657177 /1923063428480944139667114773918309212080528 /3111581989804070186099320645726169127737705 /5034645418285014325766435419644478339818233 /8146227408089084511865756065370647467555938 /13180872826374098837632191485015125807374171 /21327100234463183349497947550385773274930109
/34507973060837282187130139035400899082304280 /55835073295300465536628086585786672357234389 /90343046356137747723758225621187571439538669 /146178119651438213260386312206974243796773058 /236521166007575960984144537828161815236311727 /382699285659014174244530850035136059033084785 /619220451666590135228675387863297874269396512 /1001919737325604309473206237898433933302481297 /1621140188992194444701881625761731807571877809 /2623059926317798754175087863660165740874359106
/4244200115309993198876969489421897548446236915 /6867260041627791953052057353082063289320596021 /11111460156937785151929026842503960837766832936 /17978720198565577104981084195586024127087428957 /29090180355503362256910111038089984964854261893 /47068900554068939361891195233676009091941690850 /76159080909572301618801306271765994056795952743 /123227981463641240980692501505442003148737643593 /199387062373213542599493807777207997205533596336 /322615043836854783580186309282650000354271239929
/522002106210068326179680117059857997559804836265 /844617150046923109759866426342507997914076076194 /1366619256256991435939546543402365995473880912459 /2211236406303914545699412969744873993387956988653 /3577855662560905981638959513147239988861837901112 /5789092068864820527338372482892113982249794889765 /9366947731425726508977331996039353971111632790877 /15156039800290547036315704478931467953361427680642 /24522987531716273545293036474970821924473060471519 /39679027332006820581608740953902289877834488152161
/64202014863723094126901777428873111802307548623680 /103881042195729914708510518382775401680142036775841 /168083057059453008835412295811648513482449585399521 /271964099255182923543922814194423915162591622175362 /440047156314635932379335110006072428645041207574883 /712011255569818855923257924200496343807632829750245 /1152058411884454788302593034206568772452674037325128 /1864069667454273644225850958407065116260306867075373 /3016128079338728432528443992613633888712980904400501 /4880197746793002076754294951020699004973287771475874
/7896325826131730509282738943634332893686268675876375 /12776523572924732586037033894655031898659556447352249 /20672849399056463095319772838289364792345825123228624 /33449372971981195681356806732944396691005381570580873 /54122222371037658776676579571233761483351206693809497 /87571595343018854458033386304178158174356588264390370 /141693817714056513234709965875411919657707794958199867 /229265413057075367692743352179590077832064383222590237 /370959230771131880927453318055001997489772178180790104 /600224643828207248620196670234592075321836561403380341
/971183874599339129547649988289594072811608739584170445 /1571408518427546378167846658524186148133445300987550786 /2542592393026885507715496646813780220945054040571721231 /4114000911454431885883343305337966369078499341559272017 /6656593304481317393598839952151746590023553382130993248 /10770594215935749279482183257489712959102052723690265265 /17427187520417066673081023209641459549125606105821258513 /28197781736352815952563206467131172508227658829511523778 /45624969256769882625644229676772632057353264935332782291 /73822750993122698578207436143903804565580923764844306069
/119447720249892581203851665820676436622934188700177088360 /193270471243015279782059101964580241188515112465021394429 /312718191492907860985910767785256677811449301165198482789 /505988662735923140767969869749836918999964413630219877218 /818706854228831001753880637535093596811413714795418360007 /1324695516964754142521850507284930515811378128425638237225 /2143402371193585144275731144820024112622791843221056597232 /3468097888158339286797581652104954628434169971646694834457 /5611500259351924431073312796924978741056961814867751431689 /9079598147510263717870894449029933369491131786514446266146
/14691098406862188148944207245954912110548093601382197697835 /23770696554372451866815101694984845480039225387896643963981 /38461794961234640015759308940939757590587318989278841661816 /62232491515607091882574410635924603070626544377175485625797 /100694286476841731898333719576864360661213863366454327287613 /162926777992448823780908130212788963731840407743629812913410 /263621064469290555679241849789653324393054271110084140201023 /426547842461739379460149980002442288124894678853713953114433 /690168906931029935139391829792095612517948949963798093315456 /1116716749392769314599541809794537900642843628817512046429889
/1806885656323799249738933639586633513160792578781310139745345 /2923602405716568564338475449381171413803636207598822186175234 /4730488062040367814077409088967804926964428786380132325920579 /7654090467756936378415884538348976340768064993978954512095813 /12384578529797304192493293627316781267732493780359086838016392 /20038668997554240570909178165665757608500558774338041350112205 /32423247527351544763402471792982538876233052554697128188128597 /52461916524905785334311649958648296484733611329035169538240802 /84885164052257330097714121751630835360966663883732297726369399 /137347080577163115432025771710279131845700275212767467264610201
这回有间隔看的清楚些。

点评

赞一个!  发表于 2023-2-10 08:04
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:05 | 显示全部楼层
Mathematica可以直接使用:

Fibonacci[3000]

410615886307971260333568378719267105220125108637369252408885430926905584274113403731330491660850044560830036835706942274588569362145476502674373045446852160486606292497360503469773453733196887405847255290082049086907512622059054542195889758031109222670849274793859539133318371244795543147611073276240066737934085191731810993201706776838934766764778739502174470268627820918553842225858306408301661862900358266857238210235802504351951472997919676524004784236376453347268364152648346245840573214241419937917242918602639810097866942392015404620153818671425739835074851396421139982713640679581178458198658692285968043243656709796000
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:49 | 显示全部楼层
Treenewbee 发表于 2023-2-10 08:05
Mathematica可以直接使用:

Fibonacci[3000]

用207楼的递推公式可以实现快速计算,大概O(logN)吧
回复 支持 反对

使用道具 举报

发表于 2023-2-10 08:53 | 显示全部楼层
可以参考知乎:question/575024550   如何优美地求斐波拉契数列某一项?

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-11 09:20 | 显示全部楼层
Private Sub Form_DblClick()
    Const Nums = 80
    Dim KLB(Nums) As Long
   
    Randomize
   
    For i = 1 To Nums      'i = 1 到 80
        n = Int(Rnd * Nums) + 1  'n为随机数
        KLB(i) = n
    Next i
   
    s = ""
    For i = 1 To Nums
        s = s & KLB(i) & " "
    Next i
    Debug.Print s
     
    l = 10
    h = 30
    For i = l To h - 1
        For j = i To h
            If KLB(i) > KLB(j) Then
                t = KLB(i)
                KLB(i) = KLB(j)
                KLB(j) = t
            End If
        Next j
    Next i
   
    s = ""
    For i = 1 To Nums
        s = s & KLB(i) & " "
    Next i
    Debug.Print s
    '高手做的排序程序
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-11 09:23 | 显示全部楼层
'这个也是高手做的排序程序

Option Explicit

'接收输入:
Dim s, r, n, i
s=inputbox(vbcrlf & vbcrlf & "以空格隔开:","请输入一组数字或字符串:","? + A # 201 * c2 1 $ b 18 / ( A23 _ 15 A1 a1 & \ @ ~  ) - = ^ 4D ? 35 , 67 ! CB 21 % 10")
If s = "" Then wscript.quit
r = Split(s, " ")
n = UBound(r)
'把字符串转换为Double 子类型:
'For i = 0 To n
'    r(i) = CDBL(r(i))
'Next

'快速排序方法调用:
quicksort r, 0, n  '快速排序
'其它排序方法的调用:
'insertsort r  '插入排序
'shellsort r  '希尔排序
'bubblesort r  '冒泡排序
'selectsort r  '选择排序
'heapsort r  '堆排序

'输出结果:
inputbox vbcrlf & vbcrlf & "按升序排列是:","结果",join(r," ")

'各种排序子过程自定义:

'快速排序:
Sub quicksort(ReArr, head, tail)
'ReArr是待排序数组,head和tail是该数组的最小下标和最大下标
Dim lef,rig
Dim pivot

If head<tail Then
lef=head
rig=tail
pivot=ReArr(lef)
While (lef<>rig)

While (lef<rig and ReArr(rig)>=pivot)
rig=rig-1
Wend
If lef<rig Then
ReArr(lef)=ReArr(rig)
lef=lef+1
End If

While (lef<rig and ReArr(lef)<=pivot)
lef=lef+1
Wend

If lef<rig Then
ReArr(rig)=ReArr(lef)
rig=rig-1
End If
Wend

ReArr(lef)=pivot
call quicksort(ReArr,head,lef-1)
call quicksort(ReArr,lef+1,tail)

End If
End Sub

'插入排序:
Sub insertsort(r)
        Dim i, n, t, j
        n = UBound(r)
        For i = 1 To n '依次插入r(1),r(2),...,r(n)
                t = r(i)
                j = i - 1
                Do While t < r(j) '查找r(i)的插入位置
                        r(j + 1) = r(j) '将大于r(i)的数后移
                        j = j - 1
                        If j = -1 Then Exit Do
                Loop
                r(j + 1) = t '插入r(i)
        Next
End Sub

'希尔排序:
Sub shellsort(r)
                '设置增量序列:
        Dim i, d(), n, t, k, h, j
        n = UBound(r)
        i = 0
        ReDim d(n)
        d(i) = Fix(n / 2)
        Do Until d(i) = 1
                t = d(i)
                i = i + 1
                d(i) = Fix(t / 2)
        Loop
                '排序:
        k = 0
        Do
                h = d(k) '取本趟增量
                For i = h To n 'r(h)到r(n)插入当前有序区
                        t = r(i) '保存待插入数
                        j = i - h
                        Do While t < r(j) '查找正确的插入位置
                                r(j + h) = r(j) '后移
                                j = j - h '得到前一数的位置
                                If j < 0 Then Exit Do
                        Loop
                        r(j + h) = t '插入r(i)
                Next '本趟排序完成
                k = k + 1
        Loop While h <> 1
End Sub

'冒泡排序:
Sub bubblesort(r)
        Dim i, n, noswap, j, t
        n = UBound(r)
        For i = 0 To n - 1 '做n趟排序
                noswap = True '置未交换标志
                For j = n - 1 To i Step -1 '从下往上扫描
                        If r(j + 1) < r(j) Then '交换
                                t = r(j)
                                r(j) = r(j + 1)
                                r(j + 1) = t
                                noswap = False
                        End If
                Next
                If noswap Then Exit For '本趟排序中未发生交换则终止算法
        Next
End Sub

'快速排序:
        '划分:
Function partition(r, l, h)
        Dim i, j, t
        i = l
        j = h
        t = r(i) '初始化,t为基准
        Do
                While r(j) >= t And i < j
                        j = j - 1 '从右向左扫描,查找第1个小于t的数
                Wend
                If i < j Then
                        r(i) = r(j) '交换r(i)和r(j)
                        i = i + 1
                End If
                While r(i) <= t And i < j
                        i = i + 1 '从左向右扫描,查找第1个大于t的数
                Wend
                If i < j Then
                        r(j) = r(i) '交换r(i)和r(j)
                        j = j - 1
                End If
        Loop While i <> j
        r(i) = t '基准t已被最后定位
        partition = i
End Function

'选择排序:
Sub selectsort(r)
        Dim i, n, k, j, t
        n = UBound(r)
        For i = 0 To n - 1 '做n趟排序
                k = i
                For j = i + 1 To n '在当前无序区选最小的数r(k)
                        If r(j) < r(k) Then k = j
                Next
                If k <> i Then
                        t = r(i)
                        r(i) = r(k)
                        r(k) = t
                End If
        Next
End Sub

'堆排序:
        '筛选:
Sub sift(r, i, m) '以r(i)为根的完全二叉树构成堆
        Dim t, j
        t = r(i)
        j = 2 * i
        Do While j <= m 'j<=m,r(2*i)是r(i)的左孩子
                If j < m Then
                        If r(j) < r(j + 1) Then j = j + 1 'j指向r(i)的右孩子
                End If
                If t < r(j) Then '孩子节点的数较大
                        r(i) = r(j) '将r(j)换到双亲位置上
                        i = j '修改当前被调整节点
                        j = 2 * i
                Else
                        Exit Do '调整完毕,退出循环
                End If
        Loop
        r(i) = t '最初被调整节点放入正确位置
End Sub
Sub heapsort(r)
        Dim i, n, t
        n = UBound(r)
        For i = Fix(n / 2) To 0 Step -1 '建初始堆
                sift r, i, n
        Next
        For i = n To 0 Step -1 '进行n+1趟排序
                t = r(0) '当前堆顶数和最后一个数交换
                r(0) = r(i)
                r(i) = t
                sift r, 0, i - 1 'r(0)到r(i-1)重建成堆
        Next
End Sub
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-15 09:42 | 显示全部楼层
/7/1073741831/1073741833
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-15 09:43 | 显示全部楼层
本帖最后由 ysr 于 2023-2-15 03:29 编辑

Private Sub Command1_Click()
Dim a, B, c
a1 = Trim(Text1)
B1 = Val(Text2)
a1 = qxdcm(2, Trim(a1))
B = 1
Do While B <= Val(6)
s2 = 2
a = 2
Do While Val(s2) <= 2 * Val(B)
If InStr(Sqr(s2), ".") > 0 Then
s3 = 0
C2 = 4 * (B * (B + 1) - s2)
p = MPC1(Trim(C2), Trim(B1))
If Right(p, 1) Mod 2 = 0 Then
p = MPC1(Trim(p), 1)
Else
p = p
End If

Do While InStr(fenjieyinzi0(Trim(p)), "*") > 0 And s3 <= 3
s3 = s3 + 1
p = Val(p + 6)
Loop
Else
s2 = s2
End If

p1 = MPC1(Trim(p), Trim(a1))
p2 = MPC1(Trim(p1), 2)
If InStr(fenjieyinzi0(Trim(p)), "*") = 0 And InStr(fenjieyinzi0(Trim(p1)), "*") = 0 And InStr(fenjieyinzi0(Trim(p2)), "*") = 0 Then
s = s & "/" & p & "/" & p1 & "/" & p2 & vbCrLf
s1 = s1 + 1
Else
s1 = s1
End If
a = MPC1(Trim(a), 1)
s2 = Val(s2 + 1)
Loop
B = Val(B + 1)
Loop

If s1 > 0 Then
Text3 = s
Else
Text3 = "无解"
End If
End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub

Private Function qxdcm(sa As String, sb As String) As String

Dim a, B
a = sa: B = sb
If B = 1 Then
qxdcm = a
ElseIf B = 0 Then
qxdcm = 1
Else
a1 = a
Do While B > 1
s = Int(Log(B) / Log(2))
s1 = 0
Do While s1 < s
a = MbC(Trim(a), Trim(a))
s1 = s1 + 1
Loop
a2 = a
B = B - 2 ^ s
a = a1
If s2 > 0 Then
a3 = MbC(Trim(a3), Trim(a2))
Else
a3 = a2
End If
s2 = s2 + 1
Loop
If B = 1 Then
qxdcm = MbC(Trim(a3), Trim(a1))
Else
qxdcm = a3
End If

End If

End Function
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-15 14:09 | 显示全部楼层
本帖最后由 ysr 于 2023-2-15 08:53 编辑

/2437/1073744261/1073744263
/3943/1073745767/1073745769
/15937/1125899906858561/1125899906858563
/16267/1125899906858891/1125899906858893
/38923/1152921504606885899/1152921504606885901
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-15 14:09 | 显示全部楼层
Private Sub Command1_Click()
Dim a, B, c
a1 = Trim(Text1)
B1 = Val(Text2)
p = B1
a1 = qxdcm(2, Trim(a1))
B = 1
Do While B <= Val(100)

If Right(p, 1) Mod 2 = 0 Then
p = MPC1(Trim(p), 1)
Else
p = p
End If

Do While InStr(fenjieyinzi0(Trim(p)), "*") > 0
p = Val(p + 2)
Loop

If InStr(MCC(MPC1(Trim(a1), Trim(p)), 3), "/") > 0 Then
p1 = MPC1(Trim(p), Trim(a1))
p2 = MPC1(Trim(p1), 2)
If InStr(fenjieyinzi0(Trim(p)), "*") = 0 And InStr(fenjieyinzi0(Trim(p1)), "*") = 0 And InStr(fenjieyinzi0(Trim(p2)), "*") = 0 Then
s = s & "/" & p & "/" & p1 & "/" & p2 & vbCrLf
s1 = s1 + 1
Else
s1 = s1
End If
Else
p = p
End If
p = Val(p + 2)
B = Val(B + 1)
Loop

If s1 > 0 Then
Text3 = s
Else
Text3 = "无解"
End If
End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub

Private Function qxdcm(sa As String, sb As String) As String

Dim a, B
a = sa: B = sb
If B = 1 Then
qxdcm = a
ElseIf B = 0 Then
qxdcm = 1
Else
a1 = a
Do While B > 1
s = Int(Log(B) / Log(2))
s1 = 0
Do While s1 < s
a = MbC(Trim(a), Trim(a))
s1 = s1 + 1
Loop
a2 = a
B = B - 2 ^ s
a = a1
If s2 > 0 Then
a3 = MbC(Trim(a3), Trim(a2))
Else
a3 = a2
End If
s2 = s2 + 1
Loop
If B = 1 Then
qxdcm = MbC(Trim(a3), Trim(a1))
Else
qxdcm = a3
End If

End If

End Function
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2024-4-28 21:01 , Processed in 0.105469 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表