VB程序设计的常用算法
更新时间:2023-11-17 17:42:01 阅读量: 教育文库 文档下载
VB常用算法
《VB程序设计》上机考点与常用算法
算法:计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。 四川省二级考纲:常用算法程序设计
1.初等数论问题求解的有关算法(求最小公倍数、最大公约数、素数)
2.递推化算法(迭代、累加、累乘、穷举)(迭代略,穷举简介) 3.方程求根(二分法)(略) 4.排序算法(选择法、冒泡法) 5.查找(顺序法、折半法) 6.有序数列的插入、删除操作 7.进制转换和简单的加密解密算法 8.简单的递归过程(略)
国家二级考纲:常用算法程序设计
1、初等数论问题求解的有关算法(求最大公约数,最小公倍数,素数); 2、递推化算法(迭代,累加,累乖,穷举法); 3、方程求根(二分法);
4、排序算法(选择法,冒泡法); 5、查找(顺序法,折半法); 6、有序数列的插入、删除操作; 7、简单的递归过程。
与四川省考纲比较,没有7.进制转换和简单的加密解密算
以下对省大纲要求分别举例:
一、初等数论问题求解的有关算法(求最小公倍数、最大公约数、素数)
(一)、求两个整数的最大公约数、最小公倍数
求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)
(1) 对于已知两数m,n,使得m>n; (2) m除以n得余数r;
- 1 -
VB常用算法
(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4); (4) m←n,n←r,再重复执行(2)。
求最小公倍数的算法思想:最小公倍数=两个整数之积/最大公约数
主要代码:
m=inputBox(\
n=inputBox(\
nm=n*m ‘先求出nm=n*m,求最小公倍数时使用 If m < n Then t = m: m = n: n = t ?如果m < n,则m、n两数交换 r=m mod n ‘m、n取模,即取余 Do While (r <> 0) ‘直到r为0 m=n n=r r= m mod n Loop
Print \最大公约数=\
Print \最小公倍数=\
(二)、判断素数
素数:素数是一个大于2,且不能被1和本身以外的整数整除的整数。
算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整数m是不是素数的基本方法是:将N分别除以2,3,…,N-1,若都不能整除,则m为素数。 求100以内的素数(代码1:使用标志变量): Dim i%, m%, tag As Boolean ?tag是标志变量 j = 0
For m = 3 To 100 tag = True
For i = 2 To m - 1
If (m Mod i) = 0 Then tag = False 'm能被i整除,该m不是素数 Next i
If tag Then
Print m; \ \ 'm不能被i=2~m-1整除,m是素数,显示 j = j + 1
If j = 10 Then j = 0: Print '显示10个素数后提行 End If Next m
求100以内的素数(代码2:使用GOTO语句子): Dim i%, m%, j% j = 0
- 2 -
VB常用算法
For m = 3 To 100
For i = 2 To m - 1
If (m Mod i) = 0 Then GoTo NotNextM Next i
Print m; \ \ j = j + 1
If j = 10 Then j = 0: Print '显示10个素数后提行 NotNextM:
Next m
若n是一定任意指定的数,要求该数范围内的素数,则程序开始一般应有: m =val( InputBox(\请输入一个数\ 获取这个指定数,后面的代码同。
因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,…,Sqr(N)整除即可。 求100以内的素数(代码3:对标志变量法的改进): Dim i%, m%, tag As Boolean ?tag是标志变量 j = 0 Print
For m = 3 To 100
tag = True
For i = 2 To Int(Sqr(m))
If (m Mod i) = 0 Then tag = False 'm能被i整除,该m不是素数 Next i
If tag Then
Print m; \ \ 'm不能被i=2~m-1整除,m是素数,显示 j = j + 1
If j = 10 Then j = 0: Print '显示10个素数后提行 End If
Next m
求100以内的素数(代码4:对使用GOTO语句的改进) Dim i%, m%, j%
j = 0 Print
For m = 3 To 100
For i = 2 To Int(Sqr(m))
If (m Mod i) = 0 Then GoTo NotNextM
- 3 -
Next i
Print m; \ \j = j + 1
If j = 10 Then j = 0: Print '显示10个素数后提行
NotNextM:
VB常用算法
Next m
若将简单变量换成数组 Option Base 1
Dim a(20) As Integer
Private Sub Command1_Click() Dim i% Randomize Text1 = \― Text2 = \For i = 1 To 20
a(i) = Int(Rnd * 901 + 100) '产生随时机 Text1 = Text1 + Str(a(i)) & \ “ '连接到文本框1
For j = 2 To a(i) – 1 '判断素数 If a(i) Mod j = 0 Then GoTo abc
Next j
Text2 = Text2 & a(i) & \“ '连接到文本框1 abc: Next i End Sub
实例:编程:(程序存盘文件名sy6-3.vbp、sy6-3.frm) 程序运行界面如下图所示:
在窗口中有两个文本框和一个按钮。当单击“随机产生并查找素数”按钮时,在text1中随机产生20个100~ 1000之间的整数,同时在text2中显示出这20个整数中的所有素数。 参考程序:
Private Sub Command1_Click() Dim m As Integer
Randomize Text1 = \ Text2 = \ For i = 1 To 20
m = Int(Rnd * 901) + 100 '产生随时机数
Text1 = Text1 + Str(m) '将产生的随机数转换为字符后连接到文本框1
- 4 -
VB常用算法
For j = 2 To m - 1 '判断素数 If (m Mod j = 0) Then GoTo abc Next j
Text2 = Text2 & m & \ '连接到文本框2 abc:
Next i
End Sub补充实例:验证哥德巴赫猜想
(任意一个大于等于6的偶数都可以分解为两个素数之和)
基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否
为素数,如都是,则为一组解。如n1不是素数,就不必再检查n2是否素数。先从n1=3开始,检验n1和n2(n2=N-n1)是否素数。然后使n1+2 再检验n1、n2是否素数,… 直到n1=n/2为止。
利用上面的prime函数,验证哥德巴赫猜想的程序代码如下: 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 & \
Exit For '结束循环 End if End if Next n1
二、递推化算法(迭代、累加、累乘、穷举)
(一)、计数、求和、求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。
1、简单的累加、连乘
例1:求1~100的5或7的倍数的和
Sum = 0
For i = 1 To 100
If i Mod 5 = 0 Or i Mod 7 = 0 Then
Sum = Sum + i
End If
- 5 -
正在阅读:
VB程序设计的常用算法11-17
如何解决网站排名浮动问题06-07
浅谈国有大中型水利企业内部控制问题研究06-30
夹层结构纸板压缩剪切性能试验研究05-27
有机化学复习题12-01
举报调查报告05-21
上海第一生化药业专利权权属纠纷案12-02
监理工程竣工总结03-23
网络会计存在的问题及对策05-19
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 程序设计
- 算法
- 常用
- 中国重症加强治疗病房患者镇痛和镇静治疗指导意见
- 《展望》文章北京展览馆(5.7)
- 新版代资考复习题型
- 创业创新与领导力超星尔雅满分 答案
- 报告
- 2018年黑龙江省龙东地区中考化学试题及参考答案(word解析版)
- 证券投资实训报告 - 图文
- 对幼儿园开展特色课程的几点建议
- 武汉大学习题活页及答案
- 销售激励体系探讨 - 以友邦保险为例
- 刑法论文(浅谈醉酒人的刑事责任)
- 直流电机习题
- 现场交叉作业管理措施
- 内蒙古自治区高等院校历任校(院)长及任期时限
- Java Web2笔试题1
- 3类医疗器械自查报告模板3篇
- 新形势下高校纪检监察的实践与思考
- “礼让斑马线 文明我点赞”建议性文章及倡议书
- 2018-2019年度小学语文S版四年级下册西门豹-教学设计
- 外研社初一上英语备课M9U2