我在百度看到你,回答的VB程序问题,求两个数之间的素数,我不理解,你能给我解释下吗?

2024-11-25 01:13:03
推荐回答(1个)
回答1:

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。只有1和它本身两个约数的自然数,叫质数。(如:由2÷1=2,2÷2=1,可知2的约数只有1和它本身2这两个约数,所以2就是质数。与之相对立的是合数:“除了1和它本身两个约数外,还有其它约数的数,叫合数。”如:4÷1=4,4÷2=2,4÷4=1,很显然,4的约数除了1和它本身4这两个约数以外,还有约数2,所以4是合数。)

检验素数:检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数,参见素数判定法则。

详见:http://baike.baidu.com/view/1767.htm

求两个数之间的素数的思路是通过 For 循环对两个数之间的每一个数进行一次判断,判断其是否为素数。如果是素数就输出这个数,如果不是就跳至下一个For 。

判断素数是通过自定义函数 isprime() 来实现 , isprime()函数的返回值是 Boolean型,即是素数返回 True ,不是则返回 False。

新建一个工程,创建一个命令按键command1,两个文本框: Text1、Text2。

Function isprime(m As Integer) As Boolean

Dim i As Integer

isprime = True '先假定是素数。

For i = 2 To Sqr(m) '将数m用小于等于根号m的所有数去试除
If m Mod i = 0 Then '若能整除,即m Mod i = 0为真,则m不是素数
isprime = False 'm不是素数。
Exit For '退出循环
End If
Next i

End Function

Private Sub command1_click()

Dim j As Integer
Dim a As Long
Dim b As Long
Dim tmp As Long

a = Val(Text1.Text)
b = Val(Text2.Text)

If a > b Then '如果a>b则a与b互换一下
tmp = a
a = b
b = tmp
End If

Cls '清一下屏

'在前面判断a与b的大小是解决 For 的步进step ,默认是从小到大加1。

For j = a To b
If isprime(j) Then
Print j
End If
Next j

End Sub