Lv 753,292 points

W.J.S.

最佳解答74%
解答1,216
問題3

只會一點點的VB6跟Access.

  • (拋磚引玉)Ugly Number

    Ugly Number(醜數)的定義就是指一個數值,其質因數只能有 2 或 3 或 5 ,若還含有其他之質因數就不是Ugly Number如:12 = 2 × 2 × 3 →成立14 = 2 × 7 →不成立15 = 3 × 5 →成立1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15,這些就是前11個醜數,請設計出能求出第N個醜數的程式:如輸入20,輸出36此題若使用暴力法解題,要求出第1500個醜數(859963392)可能要跑個10~30分鐘,因此我朝Ugly=2^X × 3^Y × 5^Z,(X>=0,Y>=0,Z>=0)方向著手,以下是我的程式碼:Dim N%, K#()Private Sub Command1_Click()    N = Int(Val(InputBox("請輸入大於零之整數", "", 2000)))    If N < 1 Then Exit Sub    Cls    D = Timer    Ugly    Text1 = K(N)    Print "費時 : "; Timer - D; " 秒"End SubSub Ugly()    Dim I%, J%, L%, V%, T#, M#, B As Boolean, Y%(), S()        V = 1: ReDim K(V): K(V) = V    Do        ReDim S(L), Y(L)        For I = 0 To L            S(I) = Array(2, 3, 5)        Next        B = True        Do          T = 1          For I = 0 To L              T = T * S(I)(Y(I))          Next          If V > N Then             If T < M Then                V = V + 1: ReDim Preserve K(V): K(V) = T: B = False             Else                Exit Do             End If          Else             V = V + 1: ReDim Preserve K(V): K(V) = T: B = False             If T > M Then M = T          End If          For J = L To 0 Step -1              If Y(J) < 2 Then: Y(J) = Y(J) + 1: Exit For          Next          If J < 0 Then Exit Do          For I = J + 1 To L              Y(I) = Y(I - 1)          Next        Loop        L = L + 1    Loop Until B    For I = 1 To V - 1        For J = I To V            If K(I) > K(J) Then T = K(I): K(I) = K(J): K(J) = T        Next    NextEnd Sub執行結果:第N個使用時間(秒)答案10000.275120000020000.98062156800600010.34081466880000001000027.9(科學記號跑出來了)2.883251953125E+17雖說時間上已進步不少但在Ugly=2^X × 3^Y × 5^Z這運算式中XYZ的安排我還無法抓到規則,導致必須多算出更多的醜數再經過排序後才能找到答案,由於一直無法突破此癥結,所以把問題提出來,望各位先進賜教。PS:第1000個跟第2000個的答案應該沒錯,其他的由於無從求證故不肯定是正確XD;執行環境:P4 3.2G RAM:1G

    12 個解答程式設計1 0 年前
  • [拋磚引玉]計算當月的最後一天

    剛剛跟朋友討論到這題:    除了+-*/ mod \\ = ><^這些運算子以外,不得使用任何函數,陳述式,陣列,If~then,Select~case,for~Next,Do~Loop等等,輸入年份(西元),月份,就能算出該年當月份的最後一天是幾號,且須注意閏年與平年的問題。覺得這題挺有意思的,提出來討論,不知道各位大大有何看法?

    7 個解答程式設計1 0 年前