一道VB题目,求各位会的大哥帮忙做下(填空题)

2025-05-08 07:03:21
推荐回答(2个)
回答1:

请和你原来的代码比对一下:

Option Explicit
Private Sub Command1_Click()
Dim i As Integer
For i = 3 To 200
If prime(i) And prime(i + 2) Then
List1.AddItem i & " " & i + 2 '注释:列出孪生素数,两个数用空格分开
End If
Next i
End Sub

Private Sub Command2_Click()
Dim i As Integer, flg As Boolean
Label1.Caption = "超级素数"
List1.Clear
For i = 1001 To 9999
Call sup_prime(i, flg)
If i > 1999 And flg = True Then '注释:如果把1当素数,则这里只需填写flg=True即可,否则,要把1000-1999这些数排除。我们以前是把1排除的
List1.AddItem i
End If
Next i
End Sub

Private Function prime(x As Integer) As Boolean
Dim i As Integer
For i = 2 To Sqr(x)
If x Mod i = 0 Then
Exit Function
End If
Next i
prime = True
End Function
Private Sub sup_prime(ByVal n As Integer, flg As Boolean) '注释:n只能传值,所以必须要ByVal
flg = True
Do While n > 0
If prime(n) Then
n = n \ 10 '注释:这里不能为n/10,否则会四舍五入,影响结果
Else
flg = False
Exit Do '注释:去掉某位时,碰到不是素数的,就跳出循环,因为肯定不能做超级素数了
End If
Loop
End Sub

回答2:

Option Explicit
Private Sub Command1_Click()
Dim i As Integer
For i = 3 To 200
If prime(i) And prime(i + 2) Then
list1.additem i & (i+2)
End If
Next i
End Sub

Private Sub Command2_Click()
Dim i As Integer, flg As Boolean
Label1.Caption = "超级素数"
List1.Clear
For i = 1001 To 9999
Call sup_prime(i, flg)
If flg Then
List1.AddItem i
End If
Next i
End Sub

Private Function prime(x As Integer) As Boolean
Dim i As Integer
For i = 2 To Sqr(x)
If x Mod i = 0 Then
Exit Function
End If
Next i
prime = True
End Function
Private Sub sup_prime(byval n As Integer, flg As Boolean)
flg = True
Do While n > 0
If prime(n) Then
n=n\10
Else
flg = False
exit do
End If
Loop
End Sub