試題說明:
專案名稱:班號-質數+清單
表單大小:460x420、 表單標題「班級座號姓名-質數+清單」
標籤1個:位置(40,10),餘皆預設
文字方塊1個:位置(330 ,150 )
清單方塊ListBox1:位置(30 ,150 )、大小(250,196)、多欄
按鈕4個Button1~4,「產生質數」、「質數否?」、「第幾個?」、「[A,B]間質數」
位置(330,190)、(330,230)、(330,270)、(330,310)
程式規定:
1、載入時,按鈕2~4皆不啟動,並將標籤的背景設黑色,
字Lime色、字型改為微軟正黑,11點
2、按鈕1「產生質數」:由文字方塊讀入N值 {範圍需1~300}
產生質數加入 ListBox1,然後在 Label1顯示1~N共幾個質數{假設Cnt個 }
3、按鈕2「質數否?」:由文字方塊讀入P值 {範圍需1~N}
判斷P值是否為質數? 是則顯示第幾個,若非則顯示第0個
4、按鈕3「第幾個?」:由輸入窗輸入K值 {範圍需1~Cnt}
顯示第K個質數的數值
5、按鈕4「[A,B]間質數」:由輸入窗輸入A值{範圍需1~N}、B值{範圍需A~N}
顯示A~B之間的所有質數
參考程式碼:
**** 共用區間之變數、常數 ****
Dim N As Integer = 300
Dim c(N) As Boolean '篩法求質數的篩表
*****************************
*** 程式一載入時 ***
Label1.ForeColor = Color.Lime
Label1.BackColor = Color.Black
Label1.Font = New Font("微軟正黑", 11)
Button2.Enabled = False
Button3.Enabled = False
Button4.Enabled = False
********************
*** 按鈕1「產生質數」 ***
N = TextBox1.Text '預設為 300
If (N < 10 Or N > 300) Then
MsgBox("請輸入10~300")
Exit Sub
End If
ListBox1.Items.Clear()
c(0) = True : c(1) = True
Dim j, k As Integer
For k = 2 To N
If Not c(k) Then
ListBox1.Items.Add(k)
For j = k * k To N Step k
c(j) = True
Next
End If
Next
Label1.Text = "1 ~ " & N & " 的質數個數共 " & ListBox1.Items.Count
Button2.Enabled = True
Button3.Enabled = True
Button4.Enabled = True
********************
*** 按鈕2「質數否?」 ***
'輸入 p 是否為質數?,非則輸出0,是印出第幾個
Dim p As Integer = TextBox1.Text
If (p < 1 Or p > N) Then
MsgBox("請輸入1 ~ " & N)
Exit Sub
End If
Label1.Text = p & "是第 " & ListBox1.Items.IndexOf(p) + 1 & " 個質數"
********************
*** 按鈕3「第幾個?」 ***
Dim K As Integer = InputBox("查第幾個?")
If (K < 1 Or K > ListBox1.Items.Count) Then
MsgBox("請輸入1 ~ " & ListBox1.Items.Count)
Exit Sub
End If
Label1.Text = "第 " & K & " 個是 " & ListBox1.Items.Item(K - 1)
********************
*** 按鈕4「[A,B]間質數」 ***
Dim A As Integer = InputBox("輸入A")
If (A < 1 Or A > N) Then
MsgBox("請輸入1 ~ " & N)
Exit Sub
End If
Dim B As Integer = InputBox("輸入B")
If (B < A Or B > N) Then
MsgBox("請輸入A ~ " & N)
Exit Sub
End If
Dim pr(100) As Integer '查出的質數表
Dim pcnt As Integer = 0
Dim s As String = ""
For k = A To B
If c(k) = False Then
pr(pcnt) = k
pcnt += 1
s &= k & " "
If pcnt Mod 10 = 0 Then s &= vbNewLine
End If
Next
Label1.Text = s & vbNewLine & A & " ~ " & B & " 總個數:" & pcnt
********************
0 意見:
張貼留言