计算机考试二级VB常用算法(5):排序
1.算法描述
1)公约数:
用相除法求两个自然数m,n的公约数。
(1)首先,对于已知的两个数M和N,比较并使M > N;
(2) m除以n得到余数r;
(3)若r = 0,则n为公约数,算法结束;否则,步骤(4)
(4)m & szlig;n n & szligR重复(2)
例如:10和5
分析步骤:m=10 n=5
r=m mod n=0
,所以n(n=5)是公约数
24和9[/br]R≠0m = 9n = 6
R = m mod n = 3
R≠0m = 6n = 3
R = m mod n = 3
算法实现
循环实现
私有函数gcd (byval m as long,ByVal n As Long)
Dim temp As Long
If m < n Then temp = m:m = n:n = temp
Dim r As Long
Do
r = m Mod n
If r = 0则Exit Do
m = n
n = r
私有函数GCD的递归实现
ByVal m As Long,ByVal n As Long
Dim temp As Long
If m < n Then temp = m:m = n = temp
Dim r As Long
r = m Mod n
If r = 0 Then
Else
m = n
n = r
2)最小公倍数
m×n\公约数
3)素数的公约数
为1的两个正整数。
解题技巧
这个算法需要死记硬背!
这类题的外延是除数和因子题。
2.实践练习
1)补充代码(Spring 2,2003 (9))
给定一个十进制正整数,找出所有小于它的正整数,并与它互质(所谓互质数是指两个正整数的公约数为1,下图为程序执行画面)。
选项显式
私有函数gcd((1))As Integer
Dim r As Integer
r = m Mod n
If r = 0则
gcd = n
Else
m = n:n = r
(2)
End If
End Function
Private Sub command 1 _ Click()
Dim n为整数,p为整数
n = Val(text 1)
For p = n-1 To 2 Step-1
If(3)Then list 1。AddItem p
Next p
End Sub
2)编程问题(01卷,2002年秋)
生成一个三行八列的二维数组A(3,8),其中前两行元素由
使用初始值X1=26和公式xi+1 = (25× xi+357) mod 1027生成。
其中X1~X8是A的第一行元素;X9~X16作为A的第二行元素;的第三行中的元素值取前两行中同一列中元素的公约数
0条评论