16.德國數(shù)學(xué)家哥德巴赫曾猜測(cè):任何大于6的偶數(shù)都可以分解成兩個(gè)素?cái)?shù)(素?cái)?shù)對(duì))的和。但有些偶數(shù)可以分解成多種素?cái)?shù)對(duì)的和,如:10=3+7,10=5+5,即10可以分解成兩種不同的素?cái)?shù)對(duì)。 小敏編寫了一個(gè)VB程序,用來求一個(gè)偶數(shù)(6到100之間)可能存在多少這樣的素?cái)?shù)對(duì)(注:A+B與B+A認(rèn)為是相同素?cái)?shù)對(duì),不重復(fù)統(tǒng)計(jì)),并把這些結(jié)果輸出到一個(gè)列表框中,通過邏輯推理,小敏發(fā)現(xiàn)這些素?cái)?shù)對(duì)都是奇數(shù),所以她只需要驗(yàn)證奇數(shù)的素?cái)?shù)對(duì)即可。運(yùn)行界面如圖所示,程序代碼如下。但加框處代碼有錯(cuò),請(qǐng)改正。 Dim IsPrime(100)As Boolean'用來存儲(chǔ)是否素?cái)?shù),True為素?cái)?shù),F(xiàn)alse為非素?cái)?shù) Private Sub Command1_Click ( ) Dim x As Integer,y As Integer,i As Integer,num As Integer Call Init'調(diào)用Init函數(shù) x=Val(Text1.Text) y=x\2 num=0 For i=3To y Step 2 If IsPrime(i) Then'① num=num+1 List1.AddItem Str(x)+“=“+Str(i)+“+“+Str(x-i) End If Next i Label2.Caption=“偶數(shù)“+Str(x)+“共有“+Str(num)+“個(gè)素?cái)?shù)對(duì)。“ End Sub Sub Init
'初始化IsPrime數(shù)組的值 Dim i As Integer,j As Integer,x As Integer For i=3To 100Step 2 x=Int(Sqr(i)) For j=2To x Step 2'② If i Mod j=0Then Exit For Next j If j>x Then IsPrime(i)=True Else IsPrime(i)=False Next i End Sub
次。 (2)請(qǐng)?jiān)跈M線處填入合適的代碼。 Dim a(1To 20)As Integer Private Sub Command1_Click ( ) Dim Low As Integer,High As Integer Low=1 High=20 Do While High>Low If
Then'當(dāng)只余下兩個(gè)元素時(shí) If
Then Label1.Caption=“拐點(diǎn)元素為“+Str(a(1))+“,下標(biāo)為“+Str(1) Else Label1.Caption=“拐點(diǎn)元素為“+Str(a(High))+“,下標(biāo)為“+Str(High) End If Exit Do End If m=(Low+High)\2 If a(m)>=a(Low) Then Low=m Else
End If Loop End Sub Private Sub Form_Load ( ) '生成循環(huán)遞增的數(shù)組a,代碼略 End Sub