计算机考试二级VB常用算法(3):排序
1.算法描述
质数(Prime number):是大于等于2的整数,只能被1和它本身整除,不能被其他整数整除。
判断一个数m是否是素数的经典算法是:
对于m,从I = 2,3,4,…,m-1,我们可以依次判断它是否能被I整除。只要有一个能被I整除,m就不是素数,否则m就是素数。
私有函数sushu(ByVal n为Long)为布尔值
暗淡我一样长
对于i = 2至n - 1
如果(n Mod i) = 0,则退出
接下来我
如果I=n,那么sushu=True
结束功能
显然,事实上,我们可以改进它。
对于i = 2至n–1
用于:
对于i = 2到int(sqr(m))
这样可以提高效率。
以上判断是不是质数的代码一定要背!
应用示例
求100-200内的质数。
私有子命令1_Click()
Dim j为整数
对于j = 100到200
如果sushu(j) = True,则
打印j
如果…就会结束
下一个j
末端接头
解决问题的技巧
记住判断素数的算法流程,根据题意灵活调用!
示例描述
编程题(2002年春季计算机试卷04)
求10000以内所有可以表示为两个平方和的质数。
想法:
先找出10000以内的所有质数,判断每个质数是否可以表示为两个平方和(即对于任何比质数shu小的数I,如果I和Shu-I都是平方,就意味着可以表示为两个平方和。)
判断数I是否平方的方法:sqr(i)=int(sqr(i))
私有子命令1_Click()
Dim j为整数
Dim m一样长,n一样长
对于j = 2到10000
如果sushu(j) = True,则
如果pf(j,m,n) =真,则
列表1。AddItem j & "=" & m & "+" & n
如果…就会结束
如果…就会结束
下一个j
末端接头
私有函数pf(ByVal shu为Long,m为Long,n为Long)为布尔型
暗淡我一样长
对于i = 1至shu - 1
如果(Sqr(i) = Int(Sqr(i)))和(Sqr(shu - i) = Int(Sqr(shu - i)))那么
pf =真
m = i
n =舒一
退出功能
如果…就会结束
然后
结束功能
2.实践练习
1)补充规范(2002年春2 (7))
下面这个程序的作用是:求四位正整数中的超级素数。超级素数的定义是:当一个素数从较低的位置移到较高的位置后,仍是一个素数时,这个数就是超级素数。如2333,233,23和2都是质数,所以2333是超级质数。
选项显式
私有子命令1_Click()
Dim I为整数,flg为布尔
对于I = 1001到9999步骤2
调用sup_prime(I,flg)
如果flg那么
调试。打印I
如果…就会结束
接下来我
末端接头
Private Sub sup_prime( (1),F为布尔值)
将p标注为整数
F =真
当N > 0时执行
如果质数为N,则
(2)
其他
(3)
出口接头
如果…就会结束
环
末端接头
布尔型公共函数prime(p为整数)
将k标注为整数
如果p = 1,那么
退出功能
其他
对于k = 2至Sqr(p)
如果p Mod k = 0,则退出功能
下一个k
(4)
如果…就会结束
End
2)编程题(2004年春季计算机试卷03)
生成15个随机的两位正整数,从中找出所有的素数,并记下是哪个数,然后找出其中的素数,并给出它的位置。
位律师回复
0条评论