16.哥德巴赫 1742 年給歐拉的信中哥德巴赫提出了以下猜想:任一大于 2 的偶數都可寫成兩個 質數之和。下列 VB 程序的功能即驗證哥德巴赫猜想。程序運行時,在文本框 Text1 中輸入一個大于 2 的偶 數,單擊“證明”按鈕 Command1 后,在列表框 List1 中輸出所有符合猜想的組合,在標簽 Label2 中輸出 共有多少個組合。程序運行效果如圖所示。 為實現上述功能程序如下,但加框處的代碼有誤,請改正。Private Sub Command1_Click ( ) Dim n As Integer Dim i As Integer,c As Integer n=Val(Text1.Text) List1.Clear c=0 If n Mod 2=0Then For If Then List1.AddItem n &“=“& i &“+“& n-i c=c+1 End If Next i Label2.Caption=“共有“& c &“種組合“ Else Label2.Caption=“請輸入一個大于 2 的偶數“ End If End Sub Function is Prime(x As Integer) As Boolean Dim i As Integer Is Prime=True For i=2To Int(Sqr(x)) If x Mod i=0Then Is Prime=False Exit For End If Next i End Function
(2)實現上述功能的 VB 程序如下,請在橫線處填入合適代碼。 Private Sub Command1_Click ( ) Dim n,x,m,s As Integer'假設參與的猴子數量不超過 5000 Dim a(1To 5000)As Integer'用數組 a 存儲每只猴子的報數,值為 3 時視同出列 Dim t,y As Boolean't 用于循環,y 為 true 時表示報數順序是從頭到尾,y 為 false 時報數順序 是從尾到頭 n=Val(Text1.Text) x=1'x 為每次猴子的位置 m=1'm 為報數的 1、2、3 y=True t=True Do While t '該位置的猴子是否已經出列 If a(x)<>3Then'沒有出列的,則報數 a(x)=m ①
'1,2,3 之后重新開始 If m>3Then m=1 Else'每次有猴子報 3 出列之后,檢查是否已經只有兩只猴子沒有出列 s=0 For i=1To n If②
Then s=s+1 Next i If s<3Then Exit Do End If If y=True Then x=x+1Else x=x-1 '檢查報數是在遞增,還是遞減,y 為 true 時遞增 '報到最后一次猴子后 If x>n Then y=False:m=1:x=n '報到第一次猴子后 If x=0Then y=True:m=1: Loop '輸出猴王的位置 For i=1To n ③
If a(i)=1Then Label2.Caption=“猴王的位置為第“+Str(i)+“只“ Next i End Sub