Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。
?
只會一點點的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 個解答程式設計2 0 年前