VB常考算法(三)素数:
1、算法说明
所谓素数是指只能被1和它本身整除的数。
1)判断某数是否为素数。根据循环控制变量来判断。 算法说明:根据素数只能被1和它本身整除的性质,我们可以使用循环依次判断2到n-1(或者Sqr(n))之间有没有被它整除的数,一旦有退出循环,退出循环后通过检验循环变量的值来判断是不是素数。即,当循环正常退出,循环变量的值等于n时,该数是素数;当循环提前退出,循环变量的值小于等于n-1,该数不是素数。
程序代码如下:
Private Sub Command1_Click() Dim n As Integer, i As Integer n = Val(Text1.Text) If n < 1 Then
MsgBox \请正确输入数据\ Else
n = Val(Text1.Text) For i = 2 To n - 1
If n Mod i = 0 Then Exit For Next i
If i = n Then
MsgBox n & \是素数\ Else
MsgBox n & \不是素数\ End If End If End Sub
2)判断某数是否为素数。根据标志位flg来判断。
Private Sub Command1_Click() Dim n As Integer, i As Integer Dim flg As Boolean flg = True
n = Val(Text1.Text) If n < 1 Then
MsgBox \请正确输入数据\ Else
n = Val(Text1.Text) For i = 2 To n - 1
If n Mod i = 0 Then flg = False Next i
If flg = True Then
MsgBox n & \是素数\ Else
MsgBox n & \不是素数\
End If End If End Sub
3) 使用函数过程。通过函数返回值来判断。 Private Function isprime(n As Integer) As Boolean Dim i As Integer isprime = True For i = 2 To n - 1
If n Mod i = 0 Then isprime = False Exit Function End If Next i End Function 或者
Private Function isprime(n As Integer) As Boolean Dim i As Integer isprime = False For i = 2 To n - 1
If n Mod i = 0 Then Exit Function End If Next i
isprime = True End Function 2、实战练习 1)完善程序
算法说明:下列程序是查找四位正整数中的超级素数。所谓超级素数:当一个素数从低位到高位依次去掉一位数后剩下的数仍然是素数,则此数为超级素数。
如数2332、233、23、2均为素数,所以2333为超素数。
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, flg As Boolean For i = 1001 To 9999 Step 2 Call sup_prime(i, flg) If flg Then
Debug.Print i End If Next i End Sub
Private Sub sup_prime( (1) , f As Boolean) Dim p As Integer f = True
Do While n > 0
If prime(n) Then (2) Else
(3) Exit Sub
End If Loop End Sub
Private Function prime(p As Integer) As Boolean Dim k As Integer If p = 1 Then Exit Function Else
For k = 2 To Sqr(p)
If p Mod k = 0 Then Exit Function Next k (4) End If End Function
2)编程题
热身:
? 如何在文本框中以5个一行的形式显示100~300之间的数值?
? 编写程序,输入数据范围m、n,求出介于m、n之间所有的素数,并按每行
五个素数的形式输出到多行文本框中。
实战:
随机生成15个两位正整数,从中找出所有的素数,并记下它是第几个数,再找出其中最大的素数,并给出它的位置。程序运行界面如图所示:

