VB常用算法介绍
VB常用十大算法
1. 累加与连乘
1、算法说明
[分析]
累加形式:V=V+e 连乘形式:V=V*e
其中:V 是变量,e 是递增表达式。累加和连乘一般通过循环结构来实现。
注意:需在执行循环体前对变量 V 赋初值。一般累加时置初值0;连乘时置初值为1 [举例]求N!的结果。
Private Sub Comma nd1_Click()
Dim n%, i%, s&
n = Val(InputBox("输入 n"))
s = 1
For i = 1 To n
s = s * i
Next i
Pr int s
End Sub
[应用举例]根据下列公式,求自然对数 e 的的近似值
Private Sub Comma nd1_Click()
Dim i%, n&, t!, e!
e = 2
i = 1
t = 1
Do While t > 0.00001
i = i + 1
t = t / i e = e + t
Loop
Print"计算了 "; i;"项目和是:";e
Print Exp(1)
与上句输出值进行对比以证明算法的正确性
End Sub
2. 最值问题
1、算法说明
=1 + 一_ + — +一 + 1! 2! 3! + 1 = 1 + -1
要求:误差小于0.00001
在若干数中求最大值,一般先取第一个数为最大值的初值(即假设第一个数为最大值),然后,在循环体内将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,直到循环结束。
求最小值的方法类同。
求若干数平均值,实质上就是先求和,再除以这些数的个数。
应用举例:随机产生n个1-100 (包括1和100)的数,求它们的最大值、最小值和平均值。
vb常用算法
1、主次对角线求和(可以写成过程的形式)
Private Function SumMain(a() as integer)
For i = 1 To Ubound(a,1)
s = s + a(i, i)
Next i
sumMain=s
End Function
Private Function SumFu(a() as integer)
For i = 1 To Ubound(a,1)
s = s + a(i, Ubound(a,1) + 1 - i)
Next i
sumFu=s
End Sub
2、斐波那锲数列(后一项为前面两项之和)
Private sub Fib(n as Integer)
Dim a() as Integer
a(1) = 1: a(2) = 1
redim preserve a(n)
For i = 3 To n
a(i) = a(i - 1) + a(i - 2)
redim preserve a(i)
Next i
End Sub
3、冒泡法排序
Private Sub Sort(a() as Integer)
For i = 1 To Ubound(a) - 1
For j = i + 1 To Ubound(a)
If A(i) > A(j) Then '''判断a(i)与a(j+1)谁大,把大的放到前边
t = A(i)
A(i) = A(j)
A(j) = t
End If
Next j
Next i
''如果要从小到大排就把"A(j) > A(j - 1)"改称"A(j) < A(j - 1)" End Sub
VB常用算法介绍
VB常用算法介绍
在VB程序开发中,常常需要使用各种算法来处理数据和解决问题。下面将介绍几种常用的VB算法,包括排序算法、算法和图算法等。
1.排序算法
排序算法用来将一组数据按照一定的规则进行排列。常见的排序算法包括冒泡排序、选择排序、插入排序、归并排序和快速排序等。
冒泡排序(Bubble Sort)是一种交换排序算法,通过不断地相邻元素比较和交换,将较大的元素逐渐交换到末尾,从而实现排序。冒泡排序的时间复杂度为O(n^2)。
选择排序(Selection Sort)是一种排序算法,每次从待排序的数据元素中选择最小(或最大)的一个元素,放到已排序的序列的末尾。选择排序的时间复杂度为O(n^2)。
插入排序(Insertion Sort)是一种排序算法,将数组元素分为已排序和未排序两部分,每次从未排序的部分中取出一个元素,插入到已排序的部分的适当位置。插入排序的时间复杂度为O(n^2)。
归并排序(Merge Sort)是一种分治排序算法,将待排序的数据分为两个子序列,然后递归地对子序列进行排序,并将两个已排序的子序列合并成一个有序序列。归并排序的时间复杂度为O(nlogn)。
快速排序(Quick Sort)是一种分治排序算法,通过一次划分将待排数据分成左右两个子序列,然后递归地对子序列进行排序。快速排序的时间复杂度为O(nlogn)。
2.算法
算法用来在一个数据集合中查找一些元素或满足特定条件的元素。常
见的算法包括线性、二分和深度优先。
线性(Linear Search)是一种简单的算法,从数据集合的第一个元
VB常用算法总结大全
VB常用算法总结大全
VB(Visual Basic)是一种对初学者友好的编程语言,因其简单易学的特点而受到很多人的喜爱。在VB中,算法是编程过程中非常重要的一部分,它们用来解决各种问题,从简单的数学计算到复杂的数据处理。本文将总结一些常用的算法,帮助VB程序员更好地应用于实际项目中。
一、排序算法
1.冒泡排序
冒泡排序是一种简单的排序算法,它通过不断地交换相邻的元素来对数据进行排序。它的基本思想是从列表的第一个元素开始,依次比较相邻的两个元素,如果顺序不正确,则交换它们的位置。重复这个过程,直到整个列表都已经排序。
2.快速排序
快速排序是一种高效的排序算法,它通过选择一个基准元素,将列表分为两部分,一部分小于基准元素,一部分大于基准元素。然后对这两部分分别进行快速排序,最后将它们合并在一起。
3.插入排序
插入排序是一种简单直观的排序算法,它将列表分为已排序和未排序两部分,每次选择未排序部分的第一个元素,并插入到已排序部分的适当位置。重复这个过程,直到整个列表都已经排序。
二、查找算法
1.顺序查找
顺序查找是一种简单的查找算法,它从列表的第一个元素开始,依次比较每个元素,直到找到目标元素或者遍历完整个列表。
2.二分查找
二分查找是一种高效的查找算法,它要求列表已经排序。它通过比较目标元素与列表中间元素的大小关系来确定要的部分,并缩小范围。重复这个过程,直到找到目标元素或者确定列表中没有目标元素。
三、图算法
1.深度优先(DFS)
深度优先是一种用于图遍历的算法,它从一个起始点开始,沿着一个路径尽可能深地访问节点,直到遇到一个没有未访问过的相邻节点为止。然后回溯到前一个节点,寻找其他路径。
VB常用算法总结
VB常用算法总结
在VB(Visual Basic)编程中,常用的算法有很多。下面将对其中
一些常见和重要的算法进行总结。请注意,由于篇幅限制,这只是一个简
要总结,无法涵盖所有算法的细节。
1.排序算法:
排序算法是计算机科学中最基本和常见的算法之一、在VB中,常用
的排序算法包括冒泡排序、插入排序、选择排序、快速排序和归并排序等。排序算法通过比较和交换来对一组数据进行重新排列,使其按照指定的顺
序排列。
2.查找算法:
查找算法用于在一个数据集中寻找特定的值或元素。在VB中,常用
的查找算法有二分查找和线性查找等。二分查找是一种高效的算法,可以
在有序数组中快速地找到目标元素。
3.图算法:
图算法是用于解决与图相关的问题的算法。在VB中,常用的图算法
包括广度优先(BFS)和深度优先(DFS)等。这些算法可以用于寻找图中
的路径、检测环和遍历图等操作。
4.动态规划:
动态规划是一种用于解决最优化问题的算法。在VB中,常用的动态
规划算法有背包问题、最长公共子序列和最短路径等。动态规划算法通过
拆解问题为子问题,并保存子问题的解来避免重复计算,从而提高算法的
效率。
5.字符串匹配:
字符串匹配算法用于在一个字符串中查找另一个字符串。在VB中,
常用的字符串匹配算法有暴力匹配算法、KMP算法和Boyer-Moore算法等。这些算法通过比较字符来确定字符串的匹配位置。
6.线性代数:
线性代数是数学的一个分支,用于解决线性方程组和向量空间等问题。在VB中,常用的线性代数算法有矩阵运算、向量运算和线性方程求解等。这些算法可以应用于计算机图形学、数据分析和机器学习等领域。
VB基本算法
print a(i,j);
next j
next i
关键语句
for i=1 to 4
for j=1 to 3
b(i,j)=a(j,i)
print b(i,j);
next j
next i
(15)求一个整数的反序数。 如1234的反序数是4321。
Dim i as integer, L as integer
Dim n as integer, m as integer
N=InputBox(“input a number”)
L=len(trim(str(n))) ‘注意一定要使用Trim( )
For i=1 to L
M=m+mid(trim(str(n)), i, 1) * 10^(i-1)
Next i
数”))
For I=1 to 3
A(I)=m mod 10
M=m\10
Next i
mid=int((low+high)/2)
If x=a(mid) then
f=1
Elseif x<a(mid) then
high=mid-1
ElseIf x>a(mid) then
low=mid+1
End if
Loop
(12)排序
VB常用算法总结大全
m = Val(Text1.Text) ‘取数据M n = Val(Text2.Text) ‘取数据N
If m <> Int(m) or m < 1 or n <> Int(n) or n < 1 Then
Text3.Text = "数据错误!"
Else Do
‘求最大公约数
判断数据是否合法
r = m Mod n
分析:这是一个“递推”问题,先从最后一天推出倒数第二天的 桃子,再从倒数第二天的桃子推出倒数第三天的桃子……。
设第n天的桃子为xn,那么它前一天的桃子数是xn -1。
即:xn
1 2
xn1
1
也就是:xn1 (xn 1) 2
已知:当N=7第7 天的桃子数为1,则第6天的桃子数由公式得4 个,依次类推,可求得第1 天的桃子数。 程序如下:
Next i
5、对数组的行/列操作(行、列的和)
P115习题3:求二维数组每行的和数与每列的和数, 数组元素为1—9之间的随机数。
Option explicit
'求列和
Option base 1
Private Sub Command2_Click()
’生成数组
For J = 1 To 5
Private Sub Command1_Click() L(J) = 0
VB常用算法总结
VB常用算法总结
VB是一种基于Visual Basic语言的编程语言,广泛应用于Windows 操作系统环境下的软件开发。在VB中,算法的选择和使用对于解决问题是至关重要的。本文将对VB常用算法进行总结,希望能给读者提供一些编程的指导和参考。
一、排序算法
排序算法是一类重要的算法,用于将一组无序的数据按照一定的规则进行排序。VB中常用的排序算法有冒泡排序、选择排序、插入排序、快速排序等。
1.冒泡排序:从序列的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误则交换位置,直到序列被完全排序。
2.选择排序:依次选择未排序序列中的最小元素,将其放到已排序序列的末尾。
3.插入排序:将一个记录插入到已排序好的序列中,从而得到一个新的、记录数增1的有序序列。
4.快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,然后分别对这两部分记录继续进行排序,直到整个序列有序。
二、查找算法
查找算法用于在一组有序或无序的数据中寻找指定的元素。VB中常用的查找算法有线性查找、二分查找、哈希查找等。
1.线性查找:从数据的开头开始,逐个比较每一个元素,直到找到目
标元素。
2.二分查找:在有序序列中,每次将待查元素与中间位置的元素比较,如果相等则找到,否则将待查元素与中间位置的元素比较,直到找到目标
元素或序列为空。
3.哈希查找:通过哈希函数将关键字映射到一个定长的数组上,当需
要查找时,根据关键字计算出哈希地址,从数组中访问对应位置的元素。三、图算法
图算法主要用于解决图结构相关的问题,如最短路径、拓扑排序等。VB中常用的图算法有深度优先、广度优先、Dijkstra算法等。
VB常用简单算法
VB常用简单算法
VB是一种过程式编程语言,被广泛用于Windows平台的软件开发。
它提供了一系列的算法和数据结构可以用于解决复杂的问题。下面是一些VB常用的简单算法:
1. 顺序(Sequential Search):顺序是一种简单的算法,它检查数
组中的每个元素,直到找到目标元素或完整个数组。该算法的时间复杂度
为O(n)。
```vb
Function SequentialSearch(arr( As Integer, target As Integer) As Integer
Dim i As Integer
For i = 0 To UBound(arr)
If arr(i) = target Then
Return i
End If
Next
Return -1 '表示未找到
End Function
```
2. 二分(Binary Search):二分是一种高效的算法,它将目标元素与数组的中间元素比较,根据比较结果确定目标元素在数组的左半部分还是右半部分,并重复这个过程,直到找到目标元素或范围缩小到空集。该算法要求数组必须是有序的,并且时间复杂度为O(log n)。
```vb
Function BinarySearch(arr( As Integer, target As Integer) As Integer
Dim low As Integer = 0
Dim high As Integer = UBound(arr)
While low <= high
Dim mid As Integer = (low + high) \ 2
VB常用算法介绍
常用算法介绍
VB
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。
一、计数、求和、求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。
例:用随机函数产生100个[0,99]范围内的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。
本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的
数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……
个位是0的个数存放在x(10)。
将程序编写在一个GetTJput过程中,代码如下:
Public Sub GetTJput()
Dim a(1 To 100) As Integer
Dim x(1 To 10) As Integer
Dim i As Integer, p As Integer
'产生100个[0,99]范围内的随机整数,每行10个打印出来
For i = 1 To 100
a(i) = Int(Rnd * 100)
If a(i) < 10 Then
Form1.Print Space(2); a(i);
VB常考算法
常考算法:
1.求因子数
Private sub factor( x as integer, fn() as integer)
Dim i as integer,n as integer
Redim fn(1) : n=1 : fn(1)=1
For i=2 to x/2
If x mod i=0 then
N=n+1
Redim preserve fn(n)
Fn(n)=i
End if
Next i
End sub
2.求因子数之和
Private functionsum_ factor( n as integer) as long Dim i as intger,j as integer,s as integer
Do while i<n/2
I=i+1
If n mod i=0 then
S=s+i
End if
Loop
Sum_factor=s
End function
3.判断数是否为素数
Private function prime(n as long) as boolean
Dim i as integer
For i=2 to sqr(n)
If n mod i=0 then exit function
Next i
Prime = true
End function
4.求最大公约数
Private function gcd(m as integer,n as integer) as integer If (m mod n)=0 then
Gcd=n
Else
Gcd=gcd(n,m mod n)
End if
5.求最小公倍数
VB_常用算法总结
VB_常用算法总结
VB是一种使用广泛的编程语言,它有很多常用的算法可以应用到各
种实际的问题中。下面是一些常用的VB算法的总结。
1.排序算法:
-冒泡排序:比较相邻的两个元素,如果顺序错误则交换位置,重复
该过程直到排序完成。
-插入排序:将一个元素插入到已经排好序的数组中的正确位置。
-选择排序:每次选择数组中最小的元素,放到已排序部分的末尾。
-快速排序:选择一个元素作为基准,将小于它的元素放在它的左边,大于它的元素放在右边,分别对左右两部分进行递归排序。
2.查找算法:
-二分查找:将有序数组从中间切分,判断目标元素与中间元素的大
小关系,递归查找目标元素所在的半边数组。
-线性查找:逐个比较数组中的元素,直到找到目标元素或遍历完整
个数组。
3.图算法:
-深度优先(DFS):从起始节点开始,递归地探索图中的每个节点,
直到遍历到最深的节点为止。
-广度优先(BFS):从起始节点开始,逐层地探索图中的节点,直到
找到目标节点。
- 最短路径(Dijkstra算法):计算从起始节点到所有其他节点的最短路径。
4.动态规划:
-背包问题:给定一组物品和一个背包的容量,选择一些物品放入背包中,使得物品的总价值最大。
-最长公共子序列(LCS):两个序列中的最长公共子序列,可以用动态规划的方法求解。
5.图像处理:
-图像平滑:使用滤波器(如均值滤波器、高斯滤波器)对图像进行平滑处理,去除图像中的噪声。
- 边缘检测:使用边缘检测算法(如Canny算法、Sobel算法)从图像中检测出物体的边缘。
6.数据压缩:
-霍夫曼编码:根据字符出现的频率,构建霍夫曼树,并生成每个字符的编码,实现数据的无损压缩。
(完整版)vb常用算法介绍
一、累加算法
如果在设计过程中遇到求1+2+3+……+100等连加问题时,就可以用累加算法来解决。
累加算法的一般做法是设一个变量 s,作为累加器使用,初值为0,设一个变量用来保存加数。一般在累加算法中的加数都是有规律可循,可结合循环程序来实现. 一个循环程序的设计,如果以下三方面确定下来:变量的赋初值、循环体的内容、循环结束条件,那么根据循环语句的格式,就很容易写出相应的循环程序。例:求1+2+3++100的累加和,并打印输出
分析:
设累加器S,初值为0,加数用变量I表示
当I=1时,累加器S= S+I = 0+1=1
当I=2时,累加器S= S+I =1+2= 3
当I=3时,累加器S=S+I =3+3 =6
当I=4时,累加器S=S+I =6+4 =10
……
当I=100时,累加器S=S+100=1+2+3+……+99+100=5050
不难看出,I的值从1变化到100的过程中,累加器均执行同一个操作:S=S+I,S=S+I的操作执行了100次,所以该程序段可写成:
Dim I As Integer, S As Integer
S = 0 ‘给累加器s赋初值
For S = 1 To 100
S= S + I ‘I既作为循环变量,又作为加数
Next I
Print "1+2+……100=”; S
考虑一下:语句Print ”1+2+……100=”; S可以放在循环体中吗?
延伸一下:
上述算法对数值型数据,执行的是累加操作,如果对字符串型数据,完成的是字符串的连接.
例:从键盘上输入一串字符,要求将其加密后显示在文本框Text1中,加密的方法是将每一个字符转变为它的后一位字符,如:A转变为B,1转变为2。
VB相关算法大全(新)
计数与求和
求数组最大值
fmax = x(1)
For i = 2 To n
If x(i) > fmax Then fmax = x(i)
Next i
输入数组
For i = 1 To m
a(i) = InputBox("a(" + Str(i) + ")=") Next i
输出数组(每行n个)
For i = 1 To m
Print a(i); if i mod n =0 then print
Next i
随机数产生[N,M]范围内数组
For i = 1 To m
a(i) = int(rnd*(M-N+1))+N
Next i
数组元素倒置
For i =1 To n\2
t=A(i)
A(i)=A(n-i+1)
A(n-i+1)=t
Next I
在数组中查找数
1.原始算法
For i = 1 To n
If x = a(i) Then j = i
Next i
2.变种1
For i = 1 To 8
If x = a(i) ThenExit For
Next i
在数组中删除特定的数
For i = 1 To 8
If x = a(i) Then j = i
Next i
For i = j To 7
a(i) = a(i + 1)
Next i
求两个整数的最大公约数、最小公倍数1.原始程序
Dim n%,m%,nm%,r% m=Val(InputBox("m="))
n=Val(InputBox("n="))
nm=n*m
If m<n Then t=m: m=n: n=t
r=m mod n
Do While (r <> 0)
VB常用算法总结大全
使用Adodb.Stream对象处理二 进制数据,可以实现数据的压缩 、加密等操作。
使用MemoryStream对象在内存 中创建临时数据流,提高数据处 理效率。
感谢您的观看
THANKS
队列操作
实现入队(enqueue)、出队(dequeue)、 查看队首和队尾元素等基本操作。
3
应用举例
使用栈实现括号匹配检查、表达式求值等;使用 队列实现广度优先搜索(BFS)等算法。
06 文件操作与I/O流处理 算法
文件读写操作
顺序文件读写
使用Open、Input、Output、 Close等语句,按照文件内容的顺 序进行读写操作。
03
适用于数据量较小或者数据无序的情况。
二分查找
原理
在有序数组中,取中间元素与目标元素比较,如果目标元素小于中间元素,则在左半部分继续查找;如果目标元素大 于中间元素,则在右半部分继续查找;如果相等则查找成功。
时间复杂度
平均时间复杂度和最坏时间复杂度都是O(log n),其中n是数据结构中元素的个数。
VB常用算法总结大 全
汇报人:XX
目录
CONTENTS
• 排序算法 • 查找算法 • 图形图像算法 • 数值计算算法 • 数据结构与算法 • 文件操作与I/O流处理算法
01 排序算法
冒泡排序
时间复杂度:最好情况下为O(n),最坏和平均 情况下为O(n^2)。 稳定性:稳定。
VB常用算法大全
第章 线性代数方程组的解法
本章包括线性代数方程组的求解、矩阵求逆、行列式计算、奇异值分解和线性最小二
乘问题等的算法和程序,所给算法具有广泛的适用性和很强的通用性
一般实矩阵
高斯约当全主见节)元消去法(
具有数值稳定的特点,所给过程在得到解的同时
还得到系数矩阵的逆,但计算量大,对于方程组阶数不高而要求精度较高时,可采用此方
法分解法采用隐式的部分选主元方法,数值稳定性好,存储量小,特别对于要解系数
矩阵相同的多个方程组时最为适用,它还可用于求矩阵的逆和行列式
分解法的计算
量大约是,与列主元消去法相当,而高斯约当消去法的计倍,即
算量大约是它们的
大约见
是
对于对称矩阵,特别是正定矩阵宜采用乔累斯基分解法(节)
,它的程序
简单,计算量小
节)
分解法即正交三角分解法(见
,由于其数值稳定性非常好,
因此现在已越来越多地应用于各种数值求解中,现常用
分解代替
缺点是计
分解
算量和存储量均较大,计算速度亦较慢
病态矩阵
病态矩阵即条件数很大的矩阵对于病态矩阵,高斯消去法和
分解法都不能给出
满意的结果,
方法有时也同样不能给出满意的解,通常采用以下的处理办法:
增加计算的有效位数,如采用双精度(双倍字长)
计算,这是一个比较有效的措施
但这样做会使计算时间增加,且所需存储单元也会增到近两倍
见采用迭代改善的办法(
节)
,它是成功地改进解的精度的办法之该方法
的基本思想是在消去法的基础上利用迭代逐步改善方程组的解关键在于在迭代过程中有
些运算必须用双精度)。
采用奇异值分解
法或共见
节)。
轭斜量法(实验表明,共轭斜量法
对病态矩阵常常是一种有效的方法
特殊形式的矩阵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用算法介绍
VB
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。
一、计数、求和、求阶乘等简单算法
此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件,更要注意用来表示计数、和、阶乘的变量的初值。
例:用随机函数产生100个[0,99]围的随机整数,统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数并打印出来。
本题使用数组来处理,用数组a(1 to 100)存放产生的确100个随机整数,数组x(1 to 10)来存放个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数。即个位是1的个数存放在x(1)中,个位是2的个数存放在x(2)中,……个位是0的个数存放在x(10)。
将程序编写在一个GetTJput过程中,代码如下:
Public Sub GetTJput()
Dim a(1 To 100) As Integer
Dim x(1 To 10) As Integer
Dim i As Integer, p As Integer
'产生100个[0,99]围的随机整数,每行10个打印出来
For i = 1 To 100
a(i) = Int(Rnd * 100)
If a(i) < 10 Then
Form1.Print Space(2); a(i);
Else
Form1.Print Space(1); a(i);
End If
If i Mod 10 = 0 Then Form1.Print
Next i
'统计个位上的数字分别为1,2,3,4,5,6,7,8,9,0的数的个数,并将统计结果保存在数组x(1),x(2),...,x(10)中,将统计结果打印出来 For i = 1 To 100
p = a(i) Mod 10 ' 求个位上的数字
If p = 0 Then p = 10
x(p) = x(p) + 1
Next i
Form1.Print "统计结果"
For i = 1 To 10
p = i
If i = 10 Then p = 0
Form1.Print "个位数为" + Str(p) + "共" + Str(x(i)) + "个"
Next i
End Sub
二、求两个整数的最大公约数、最小公倍数
分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)
(1) 对于已知两数m,n,使得m>n;
(2) m除以n得余数r;
(3) 若r=0,则n为求得的最大公约数,算法结束;否则执行(4);
(4) m←n,n←r,再重复执行(2)。
例如: 求 m=14 ,n=6 的最大公约数. m n r
14 6 2
6 2 0
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—INT ()作为除数,如果都除不尽,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
将其写成一函数,若为素数返回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是否为素数,如都是,则为一组解。如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 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
五、排序问题
1.选择法排序(升序)
基本思想:
1)对有n个数的序列(存放在数组a(n)中),从中选出最小的数,与第1个数交换位置;
2)除第1 个数外,其余n-1个数中选最小的数,与第2个数交换位置;