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常用算法介绍)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为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
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中实现常用算法是程序开发中非常常见的任务之一、下面将介绍几个常用的算法以及它们在VB中的实现方式。
1.冒泡排序算法:
冒泡排序是一种简单直观的排序算法,它通过交换相邻元素来排序。具体实现如下:
```vb
Sub BubbleSort(arr( As Integer)
Dim i As Integer, j As Integer
Dim temp As Integer
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(j) < arr(i) Then
temp = arr(j)
arr(j) = arr(i)
arr(i) = temp
End If
Next j
Next i
End Sub
```
2.快速排序算法:
快速排序是一种高效的排序算法,它通过选择一个基准元素并将数组分为两部分来排序。具体实现如下:
```vb
Sub QuickSort(arr( As Integer, low As Integer, high As Integer)
Dim i As Integer, j As Integer
Dim pivot As Integer, temp As Integer
i = low
j = high
pivot = arr((low + high) / 2)
While i <= j
While arr(i) < pivot
i=i+1
Wend
While arr(j) > pivot
VB常用算法总结
VB常用算法总结
VB是一种基于Visual Basic语言的编程语言,广泛应用于Windows 操作系统环境下的软件开发。在VB中,算法的选择和使用对于解决问题是至关重要的。本文将对VB常用算法进行总结,希望能给读者提供一些编程的指导和参考。
一、排序算法
排序算法是一类重要的算法,用于将一组无序的数据按照一定的规则进行排序。VB中常用的排序算法有冒泡排序、选择排序、插入排序、快速排序等。
1.冒泡排序:从序列的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序错误则交换位置,直到序列被完全排序。
2.选择排序:依次选择未排序序列中的最小元素,将其放到已排序序列的末尾。
3.插入排序:将一个记录插入到已排序好的序列中,从而得到一个新的、记录数增1的有序序列。
4.快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,然后分别对这两部分记录继续进行排序,直到整个序列有序。
二、查找算法
查找算法用于在一组有序或无序的数据中寻找指定的元素。VB中常用的查找算法有线性查找、二分查找、哈希查找等。
1.线性查找:从数据的开头开始,逐个比较每一个元素,直到找到目
标元素。
2.二分查找:在有序序列中,每次将待查元素与中间位置的元素比较,如果相等则找到,否则将待查元素与中间位置的元素比较,直到找到目标
元素或序列为空。
3.哈希查找:通过哈希函数将关键字映射到一个定长的数组上,当需
要查找时,根据关键字计算出哈希地址,从数组中访问对应位置的元素。三、图算法
图算法主要用于解决图结构相关的问题,如最短路径、拓扑排序等。VB中常用的图算法有深度优先、广度优先、Dijkstra算法等。
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 常用算法
常用算法汇总
计算机等级考试二级VB常用算法(1):累加和连乘
1、算法说明
累加形式:V=V+e
连乘形式:V=V*e
其中:V是变量,e是递增表达式。累加和连乘一般通过循环结构来实现。
注意:需在执行循环体前对变量V赋初值。一般的,累加时置初值0;连乘时置初值为1.
举例
求N!的结果。
Private Sub Command1_Click()
Dim n%,i%,s&
n = V al(InputBox("输入n"))
s = 1
For i = 1 To n
s = s * i
Next i
Print s
End Sub
错误的写法:
Private Sub Command1_Click()
Dim n%,i%,s&
n = V al(InputBox("输入n"))
For i = 1 To n
s = 1 …赋初值语句位置不对!
s = s * i
Next i
Print s …输出s的值为n,而不是n!
End Sub
应用举例
根据下列公式,求自然对数e的的近似值。
要求:误差小于0.00001
Private Sub Command1_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
解题技巧
1)由于这类题目往往是根据精度要求来求值,因此我们不能预知具体循环次数,所以这类题目一般用Do循环,很少用For循环。设定循环变量和通项变量,注意各变量的初值;
VB算法
VB常用算法(一)累加和连乘
关键词:算法累加连乘
1、算法说明
累加形式:V=V+e
连乘形式:V=V*e
其中:V是变量,e是递增表达式。累加和连乘一般通过循环结构来实现。
注意:需在执行循环体前对变量V赋初值。一般的,累加时置初值0;连乘时置初值为1。举例
求N!的结果。
Private Sub Command1_Click()
Dim n%, i%, s&
n = Val(InputBox("输入n"))
s = 1
For i = 1 To n
s = s * i
Next i
Print s
End Sub
错误的写法:
Private Sub Command1_Click()
Dim n%, i%, s&
n = Val(InputBox("输入n"))
For i = 1 To n
s = 1 …赋初值语句位置不对!
s = s * i
Next i
Print s …输出s的值为n,而不是n!
End Sub
应用举例
根据下列公式,求自然对数e的的近似值。
要求:误差小于0.00001
Private Sub Command1_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
解题技巧
1) 由于这类题目往往是根据精度要求来求值,因此我们不能预知具体循环次数,所以这类题目一般用Do 循环,很少用For循环。设定循环变量和通项变量,注意各变量的初值;
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)。 稳定性:稳定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常用算法
1.判断素数
素数是指只能被1与自己整除的数是素数,最小的素数是2,如3,5,7等都是素数判断方法一:
Private Function Prime(N As Integer)As Boolean
Dim i As Integer
For i=2 To N-1(或sqr(N)或N\2)
If N Mod i=0 Then Exit For
Next i (或N/i=Int(N/i))
If i=N Then Prime=True
End Function
判断方法二:
Private Function Prime(N As Integer)As Boolean
Dim i As Integer
For i=2 To N-1
If N Mod i=0 Then Exit Function
Next i
Prime=True
End Function
(2)求最大公约数(欧几里德算法,辗转相除法)
最大公约数是指两个数最大的公约数
Private Function Gcd(byval m As Integer,ByVal n As Integer)As Integer Dim r As Integer
r=m Mod n
Do while r<>0
m=n
n=r
r=m Mod n
Loop
Gcd=n
End Function
利用递归实现判断最大公约数
Private Function Gcd(ByVal m As Integer,ByVal n As Integer)As Integer
Dim r As Integer
r=m Mod n
If r=0 Then
Gcd=n
ELse
M=n
n=r
Gcd=Gcd(m,n)
End If
End Function
(3)求因子算法与求完全数算法
Private Sub factor(x As Integer,fn()As Integer)
'动态数组fn用以存放所有的因子
Dim i As Integer,n As Integer
For i=1 To X
If x Mod i=0 Then
n=n+1
Redim Preserve fn(n)
fn(n)=i
End If
Next i
End Sub
求完全数:完全数:整数N的因子和(其中因子包括1,不包括自身)等于N
Prirate Function wanshu(N As Integer)As Boolean 'N为原数,sum为N的因子之和
Dim i As Integer,sum As Integer
For i=1 To N-1
If N Mod i=0 Then
sum=sum+i
End If
Next i
If sum=N Then wanshu=True
End Function
(4)进制转换
N进制--十进制
如二进制转换为十进制采用从右向左每个数乘以其对应的幂值,如二进制10111=1×2^0+1×2^1+1×2^2+0×2^3+1×2^4=23,八进制转换为十进制采用从右向左每个数乘以其对应的幂值,如八进制25=5×8^0+2×8^1=21,十六进制转换为十进制采用从右向左每个数乘以其对应的幂值, 如十六进制A7=7×16^0+10×16^1=167(十六进制的范围是从0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个数,其中A表示10,B表示11,依次类推,F表示15)
private sub zh1(a as string, N as integer,b as integer)
'a为N进制数,b为转换后的十进制数,N 代表某种进制
dim p as integer,i as integer,s1 as string
p=0
for i=Len(a) to 1 step -1
s1=Ucase(Mid(a,i,1))
if s1>="A" And s1<="F" Then s1=Asc(s1)-55
b=b+val(s1)*N^p
p=p+1
Next I
End Sub
十进制---- N进制:方法是除N逆序取余法,注意逆序
如将十进制188转换为十六进制的方法是,除以16逆序取余法, 所以是274
余数
188/8 4(余数)
23/8 7(余数)
2/8 2(余数)
Private Sub zh(a as integer,N as integer,b as integer)
‘a为十进制数,b为转换后的N进制数,N代表某种进制dim r as integer, s as string
do until a=0
r=a mod n ‘r取余
if r>9 then s=Chr(55+r) else s=Cstr(r)
b=s & b
a=a\N
Loop
End Sub
(5)互质数:两个数的最大公约数为1
Private Function reprime(a as integer, b as integer) as boolean dim i as integer
for i=2 to a
if a mod i=0 and b mod i=0 then exit function
next i
reprime=true
End Function
(6)回文数:左右对称的数为回文数(如121,13231)
方法一:折半判断法
Private Function compare(n as long) as boolean
Dim I as integer, s as string , slen as integer
s=Cstr(n): slen=Len(s)
For i=1 to slen\2
if mid(s,I,1)<>Mid(s,slen-i+1,1) Then Exit Function next
compare=true
End Function
方法二:根据定义:其逆序数(反序数)和原数相等的数为回文数Private Function compare(n as integer) as Boolean
dim I as integer, s1 as string,s2 as string
s1=cstr(n)
For i=1 to len(s1)
s2=Mid(s1,I,1) & s2
Next I
if s2=s1 then compare=true
End Function
(7)最小公倍数
方法一:最小公倍数=两数乘积/最大公约数