VB常用算法(九)數學應用- |
VB常用算法(九)數學應用- -曹蘇群 http://caosuqun.bokee.com Tag: 數學應用 算法
1、算法說明1) 初等數學 遞推法 又稱為“迭代法”,其基本思想是把一個復雜的計算過程轉化為簡單過程的多次重復。每次重復都在舊值的基礎上遞推出新值,并由新值代替舊值。 問題:猴子吃桃子 小猴子有若干桃子,第一天吃掉一半多一個;第二天吃掉剩下的一半多一個…..;如此,到第七天早上要吃時,只剩下一個桃子。問小猴子一開始共有多少桃子? 分析:可以最后一天桃子數推出倒數第二天的桃子數;再從倒數第二天推出倒數第三天桃子數……….. 設第n天桃子數為xn,前一天桃子數是:xn-1,則有關系: xn=xn-1/2-1 程序如下: Private Sub Command1_Click() Dim n%, i% x = 1 '第七天桃子數 Print "第七天桃子數: 1只" For i = 6 To 1 Step -1 x = (x + 1) * 2 Print "第" & i & "天桃子數:" & x & "只" Next i End Sub
窮舉法 又稱枚舉法,即將所有可能情況一一測試,判斷是否滿足條件,一般用循環實現。 問題:百元買雞問題。 假定小雞每只5角;公雞每只2元;母雞每只3元,F在有100元,要求買100只雞,編程列出所有可能的購雞方案。 分析: 設母雞、公雞、小雞分別x、y、z只,則有: x+y+z=100 3x+2y+0.5z=100 程序一: Private Sub Command1_Click() Dim x%, y%, z% For x = 0 To 100 For y = 0 To 100 For z = 0 To 100 If x + y + z = 100 And 3 * x + 2 * y + 0.5 * z = 100 Then Print x, y, z End If Next z Next y Next x End Sub
程序二(優化) Private Sub Command1_Click() Dim x%, y% For x = 0 To 33 For y = 0 To 50 If 3 * x + 2 * y + 0.5 * (100 - x - y) = 100 Then Print x, y, 100 - x - y End If Next y Next x End Sub
2) 高等數學 求積分 近似計算積分:s=∫13(x3+2x+5)dx
代碼如下: Public Function f(ByVal x!) '被積函數 f = x * (x * x + 2) + 5 End Function
Public Function trapez(ByVal a!, ByVal b!, ByVal n%) As Single 'b、a分別為積分上下限,n為等分數 Dim sum!, h!, x! h = (b - a) / n sum = (f(a) + f(b)) / 2 For i = 1 To n - 1 x = a + i * h sum = sum + f(x) Next i trapez = sum * h End Function 調用: Private Sub Command1_Click() Print trapez(1, 3, 30) End Sub
數論綜合題 此類題目比較廣泛,必須給以足夠重視。 歷年題目有:平方數、零巧數、擬互滿數、回文數、酉完數、完數、幸運數、逆序數以及無暇素數、超級素數、因子和等。
2、實戰練習1) 補充代碼(2002秋二(10)) 找出由兩個不同數字組成的平方數,并將結果按圖中的格式顯示在列表框 List1中。
Option Explicit Private Sub Command1_Click() Dim I As Long, N As Long For I = 11 To 300 (1) If Verify(N) Then (2) End If Next I End Sub
Private Function Verify( (3) ) As Boolean Dim A(0 To 9) As Integer, I As Integer, Js As Integer Do While N <> 0 (4) N = N \ 10 For I = 0 To 9 Js = Js + A(I) Next I (5) End Function
1) 編程題(2004秋上機試卷08) 一個正整數被稱為奇妙平方數,如果此數的平方與它的逆序數的平方互為逆序數。例如, 12^2=144, 21^2=441,12 與 21 互逆 ,144 與 441 互逆 ,12 就是奇妙平方數。找出 1-300 以內所有的奇妙平方數。
|