- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VB课程常用算法
第三讲:常用算法 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。 二、用辗转相除法求两自然数m,n的最大公约数和最小公倍数。 分析:(1)对于已知两数m,n,使得mn; (2) m除以n得余数r; (3)若r=0,则n为最大公约数结束;否则执行(4); (4)m? n,n? r,再重复执行(2)。 三、判断素数 基本思想: 把m作为被除数,将2~Int(Sqr(m))作为除数,如果都除不尽,m就是素数,否则就不是。可用以下程序段实现 m =val( InputBox(请输入一个数)) For i=2 To int(sqr(m)) If m Mod i = 0 Then Exit For Next i If i int(sqr(m)) Then Print 该数是素数 Else Print 该数不是素数 End If 例:验证哥德巴赫猜想(任意一个大于等于6的偶数都可以分解为两个素数之和) 基本思想:N为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1=n1+2,再检验n1、n2是否素数,…直到n1=N/2为止。 Private Function Prime( m as Integer) As Boolean Dim i% Prime=True For i=2 To int(sqr(m)) If m Mod i = 0 Then Prime=False: Exit For Next i End Function 验证哥德巴赫猜想 Dim n%,n1%,n2% n=Val(InputBox(输入大于6的正整数)) For n1=3 to n\2 step 2 n2=n-n1 If prime(n1) Then If prime(n2) then Print n = n1 + n2 Exit For End if End if Next n1 四、数组排序 对已知存放在数组中的n个数。 (1).选择法排序 算法思想: 1)对有n个数的序列(存放在数组a(n)中),从中选出最小(升序)或最大(降序)的数,与第1个数交换位置; 2)除第1 个数外,其余n-1个数中选最小或最大的数,与第2个数交换位置; 3)依次类推,选择了n-1次后,这个数列已按升序排列。 选择法排序(升序)的VB程序 For i = 1 To n - 1 imin = i For j = i + 1 To n If a(imin) a(j) Then imin = j Next j temp = a(i) a(i) = a(imin) a(imin) = temp Next i (2).冒泡法排序(递增) 算法思想:(将相邻两个数比较,小的调到前头) 1)有n个数(存放在数组a(n)中),第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”; 2)第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两两相邻比较后得次大的数; 3)依次类推,n个数共进行n-1趟比较,在第j趟中要进行n-j次两两比较。 冒泡法排序(升序)的VB程序: For i = 1 To n - 1 For j = 1 To n-i If a(j) a(j+1) Then temp=a(j) a(j)=a(j+1) a(j+1)=temp End if Next j Next i 例:删除数组中相同的元素 Public Sub del(a() As Integer) i = LBound(a) Do While i UBound(a) j = i + 1 Do While j = UBound(a) If a(i) = a(j) Then n = UBound(a) Fo
文档评论(0)