- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机二级考试VB常用算法:约数因子
1、算法说明
1)
(1)
(2)
(3)
(4) 譬如:
最大公约数:用辗转相除法求两自然数 m、 n 的最大公约数。
首先,对于已知两数 m n,比较并使得 mn
m除以n得余数r ;
若r = 0,则n为求得的最大公约数, 算法结束;否则执行步骤(4) m^ n n宀r 再重复执行(2)
10 与 5
分析步骤:
m=10 n=5
r=m mod n=0
所以 n(n=5) 为最大公约数
24 与 9
分析步骤:
m=24 n=9
r=m mod n=6
r 丰 0 m=9 n=6
r=m mod n=3
r 丰 0 m=6 n=3
r=m mod n=0
所以 n(n=3) 为最大公约数
算法实现
Private Function GCD(ByVal m As Long, ByVal n As Long) 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 Then Exit Do
m = n
n = r
Loop
GCD = n
End Function
最小公倍数
mx n*最大公约数
互质数
最大公约数为 1 的两个正整数
(3
(3) Then List1. AddItem p
(3
(3) Then List1. AddItem p
解题技巧
该算法需要识记!
这种类型题目的扩展是约数和因子题型。
2、实战练习
1) 补充代码(2003春二(9))
给定一个十进制正整数,找出小于它并与其互质的所有正整数 (所谓互质数是 指最大公约数为1的两个正整数,下图是程序执行画面)。
Optio n Explicit( (1
Optio n Explicit
( (1)
Private Function gcd
)As Integer
Dim r As In teger
r = m Mod n
If r = 0 Then
Elsegcd = n
Else
gcd = n
m = n: n = r
(2)
End If
End Fun cti on
Private Sub Comma nd1_Click() Dim n As In teger, p As In teger n = Val(Text1)
For p = n - 1 To 2 Step -1
If
3)(
3)
(3)
Next p
End Sub
2) 编程题(2002秋上机试卷01)
生成一个三行八列的二维数组 A(3,8),其中前两行元素产生的方法是:
用初值 X仁26及公式Xi+1=(25 XXi+357) Mod 1024,产生一个数列: X1、X2、……、X16 其中X1~X8作为A的第一行元素;X9~X16作为A的第二行元素;A的第三行元素值取前 两行同列元素的最大公约数。最后按图示格式显示在图片框中。
计算机二级考试VB常用算法:进制转化
1、算法说明
1) 十进制正整数 m转换为R (2- 16)进制的字符串。
思路: 将m不断除r取余数,直到商为 0,将余数反序即得到结果。
算法实现:
Private Function Tran (ByVai m As In teger, ByVai r As In teger) As Stri ng
Dim StrDtoR As String, n As Integer
Do While m o
n = m Mod r
m = m \ r
If n 9 The n
StrDtoR = Chr(65 + n - 10) StrDtoR 将余数 n 转换为字符(10 转为 A , 11
为B,依次类推,然后放到转换后字符串的前面(实现反序排列)
Else
StrDtoR = n StrDtoR
End If
Loop
Tran = StrDtoR
End Function
2) R (2 — 16)进制字符串转换为十进制正整数。
思路:R进制数每位数字乘以权值之和即为十进制数。
算法实现:
Private Function Tran (ByVai s As String, ByVai r As In teger) As in teger
Dim n As In teger, dec As In teger
s = UCase(Trim(s))
For i% = 1 To Len(s)
If Mid(s, i, 1) = A The n
n = Asc(Mid(s, i, 1)) - Asc(A) + 10 将字母 A 转换为 10, B 转换为 11,-
Else
n = Val(Mid(s, i, 1))
End
文档评论(0)