有一组正整数,要求仅对其中的素数进行升序排序。排序后素数在前,非素数在后排序示例如下。
排序前 | 86 | 71 | 5 | 41 | 81 | 79 | 37 | 89 |
排序后 | 5 | 37 | 41 | 71 | 79 | 89 | 86 | 81 |
实现上述功能的VB程序如下,但加框处代码有错,请改正。
Const n = 8
Dim a(1 To n) As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, k As Integer, t As Integer
Dim flag As Boolean
'读取一组正整数,存储在数组 a 中,代码略
For i = 1 To n - 1
k = 1 ‘①
If IsPrime(a(k)) Then flag = True
Else flag = False
For j = i + 1 To n
If IsPrime(a(j)) Then
If a(j) < a(k) Then ‘②
k = j
flag = True
End If
End If
Next j
If k <> i Then
t = a(k): a(k) = a(i): a(i) = t
End If
If Not flag Then Exit For 'Exit For 表示退出循环
Next i
'依次输出排序后的数据。代码略
End Sub
Function IsPrime(m As Integer) As Boolean
'本函数判断 m 是否是素数:是素数返回值为 True,不是素数返回值为 False'代码略
End Function
划线处代码有误,请将正确的代码填到横线上。
①
②