1 / 11
文档名称:

VB程序设计常用算法.doc

格式:doc   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VB程序设计常用算法.doc

上传人:799474576 2015/5/27 文件大小:0 KB

下载得到文件列表

VB程序设计常用算法.doc

相关文档

文档介绍

文档介绍:VB程序设计的常用算法
算法(Algorithm),:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据,输出什么结果),采用什么结构,,结构化流程图,伪代码等来描述算法.
一、计数,求和,求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值,终值或结束条件,更要注意用来表示计数,和,阶乘的变量的初值.
例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来.
本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(0 to 9)来存放个位上的数字分别为0,1,2,3,4,5,6,7,8,(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(0).
将程序编写在一个GetTJput过程中,代码如下:
Public Sub GetTJput()
Dim a(1 To 100) As Integer
Dim x(0 To 9) As Integer
Dim i As Integer
For i = 1 To 100
a(i) = Int(Rnd * 100)
r = a(i) Mod 10
x(r) = x(r) + 1
Print a(i); "("; x(r); ")"; ;
If i Mod 10 = 0 Then Print
Next
Print "********************"
For i = 0 To 9
Print x(i)
Next
End Sub
二、最大公约数与最小公倍数
(1)
(2) m除以n得余数r;
(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4) m←n,n←r,再重复执行(2).
例如: 求 m=14 ,n=6 的最大公约数. mnr
m=inputBox("m=")
n=inputBox("n=")
nm=n*m
If m < n Then t = m: m = n: n = t
r=m mod n
Do While (r <>0)
m=n
n=r
r= m mod n
Loop
Print "最大公约数=", n
Print "最小公倍数=", nm/n
三、判断素数
只能被1或本身整除的数称为素数基本思想:把m作为被除数,将2—(m-1)作为除数,如果都除不尽,m就是素数,否则就不是.(可用以下程序段实现)
m =val( InputBox("请输入一个数"))
For i=2 To m-1
If m Mod i = 0 Then Exit For
Next i
If i = m Then
Print "该数是素数"
Else
Print "该数不是素数"
End If
将其写成一函数,若为素数返回True,不是则返回False
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
四、验证哥德巴赫猜想
(任意一个大于等于6的偶数都可以分解为两个素数之和)
基本思想:n为大于等于6的任一偶数,可分解为n1和n2两个数,分别检查n1和n2是否为素数,如都是,,=3开始,检验n1和n2(n2=N-n1)+1 再检验n1,n2是否素数,…直到n1=n/2为止.
利用上面的prime函数,验证哥德巴赫猜想的程序代码如下:
Dim n%,n1%,n2%
n=Val(InputBox("输入大于6的正整数"))
For n1=3 to n\2
n2=n-n1
If prime(n1) And Prime(n2) then
Print n & "=" & n1 & "+" & n2
Exit For ’结束循环
End if
Next n1
五、排序问题
(升序)
基本思想:
1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;
2)除第1 个数外,其余n-1个数中选最小的数,与第2个