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元。现在有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 以内所有的奇妙平方数。
|