一个练习的程序,分为两部分。左边列表显示算出的素数,右边显示每个偶数的两个奇素数之和。
程序很简陋,还请大家多提意见。
Form1.Designer.cs
1 namespace Gedebahe
2 {
3 partial class Form1
4 {
5 /// <summary>
6 /// 必需的设计器变量。
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// 清理所有正在使用的资源。
12 /// </summary>
13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows 窗体设计器生成的代码
24
25 /// <summary>
26 /// 设计器支持所需的方法 - 不要
27 /// 使用代码编辑器修改此方法的内容。
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.btnStart = new System.Windows.Forms.Button();
32 this.label1 = new System.Windows.Forms.Label();
33 this.btnStop = new System.Windows.Forms.Button();
34 this.lPn = new System.Windows.Forms.ListBox();
35 this.txtNumber = new System.Windows.Forms.TextBox();
36 this.btnSuspend = new System.Windows.Forms.Button();
37 this.label2 = new System.Windows.Forms.Label();
38 this.txtEndNumber = new System.Windows.Forms.TextBox();
39 this.leven = new System.Windows.Forms.ListBox();
40 this.SuspendLayout();
41 //
42 // btnStart
43 //
44 this.btnStart.Location = new System.Drawing.Point(301, 8);
45 this.btnStart.Name = "btnStart";
46 this.btnStart.Size = new System.Drawing.Size(75, 23);
47 this.btnStart.TabIndex = 0;
48 this.btnStart.Text = "Start";
49 this.btnStart.UseVisualStyleBackColor = true;
50 this.btnStart.Click += new System.EventHandler(this.button1_Click);
51 //
52 // label1
53 //
54 this.label1.AutoSize = true;
55 this.label1.Location = new System.Drawing.Point(10, 13);
56 this.label1.Name = "label1";
57 this.label1.Size = new System.Drawing.Size(77, 12);
58 this.label1.TabIndex = 1;
59 this.label1.Text = "Start Number";
60 //
61 // btnStop
62 //
63 this.btnStop.Location = new System.Drawing.Point(487, 8);
64 this.btnStop.Name = "btnStop";
65 this.btnStop.Size = new System.Drawing.Size(75, 23);
66 this.btnStop.TabIndex = 4;
67 this.btnStop.Text = "Stop";
68 this.btnStop.UseVisualStyleBackColor = true;
69 this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
70 //
71 // lPn
72 //
73 this.lPn.FormattingEnabled = true;
74 this.lPn.ItemHeight = 12;
75 this.lPn.Location = new System.Drawing.Point(13, 50);
76 this.lPn.Name = "lPn";
77 this.lPn.Size = new System.Drawing.Size(114, 316);
78 this.lPn.TabIndex = 5;
79 //
80 // txtNumber
81 //
82 this.txtNumber.Location = new System.Drawing.Point(94, 8);
83 this.txtNumber.Name = "txtNumber";
84 this.txtNumber.Size = new System.Drawing.Size(55, 21);
85 this.txtNumber.TabIndex = 6;
86 this.txtNumber.Text = "3";
87 //
88 // btnSuspend
89 //
90 this.btnSuspend.Location = new System.Drawing.Point(391, 8);
91 this.btnSuspend.Name = "btnSuspend";
92 this.btnSuspend.Size = new System.Drawing.Size(75, 23);
93 this.btnSuspend.TabIndex = 7;
94 this.btnSuspend.Text = "Suspend";
95 this.btnSuspend.UseVisualStyleBackColor = true;
96 this.btnSuspend.Click += new System.EventHandler(this.btnSuspend_Click);
97 //
98 // label2
99 //
100 this.label2.AutoSize = true;
101 this.label2.Location = new System.Drawing.Point(155, 13);
102 this.label2.Name = "label2";
103 this.label2.Size = new System.Drawing.Size(65, 12);
104 this.label2.TabIndex = 8;
105 this.label2.Text = "End Number";
106 //
107 // txtEndNumber
108 //
109 this.txtEndNumber.Location = new System.Drawing.Point(226, 8);
110 this.txtEndNumber.Name = "txtEndNumber";
111 this.txtEndNumber.Size = new System.Drawing.Size(68, 21);
112 this.txtEndNumber.TabIndex = 9;
113 this.txtEndNumber.Text = "1000000";
114 //
115 // leven
116 //
117 this.leven.FormattingEnabled = true;
118 this.leven.ItemHeight = 12;
119 this.leven.Location = new System.Drawing.Point(179, 50);
120 this.leven.Name = "leven";
121 this.leven.Size = new System.Drawing.Size(374, 316);
122 this.leven.TabIndex = 10;
123 //
124 // Form1
125 //
126 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
127 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
128 this.ClientSize = new System.Drawing.Size(574, 377);
129 this.Controls.Add(this.leven);
130 this.Controls.Add(this.txtEndNumber);
131 this.Controls.Add(this.label2);
132 this.Controls.Add(this.btnSuspend);
133 this.Controls.Add(this.txtNumber);
134 this.Controls.Add(this.lPn);
135 this.Controls.Add(this.btnStop);
136 this.Controls.Add(this.label1);
137 this.Controls.Add(this.btnStart);
138 this.Name = "Form1";
139 this.Text = "Form1";
140 this.Load += new System.EventHandler(this.Form1_Load);
141 this.ResumeLayout(false);
142 this.PerformLayout();
143
144 }
145
146 #endregion
147
148 private System.Windows.Forms.Button btnStart;
149 private System.Windows.Forms.Label label1;
150 private System.Windows.Forms.Button btnStop;
151 private System.Windows.Forms.ListBox lPn;
152 private System.Windows.Forms.TextBox txtNumber;
153 private System.Windows.Forms.Button btnSuspend;
154 private System.Windows.Forms.Label label2;
155 private System.Windows.Forms.TextBox txtEndNumber;
156 private System.Windows.Forms.ListBox leven;
157 }
158 }
2 {
3 partial class Form1
4 {
5 /// <summary>
6 /// 必需的设计器变量。
7 /// </summary>
8 private System.ComponentModel.IContainer components = null;
9
10 /// <summary>
11 /// 清理所有正在使用的资源。
12 /// </summary>
13 /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14 protected override void Dispose(bool disposing)
15 {
16 if (disposing && (components != null))
17 {
18 components.Dispose();
19 }
20 base.Dispose(disposing);
21 }
22
23 #region Windows 窗体设计器生成的代码
24
25 /// <summary>
26 /// 设计器支持所需的方法 - 不要
27 /// 使用代码编辑器修改此方法的内容。
28 /// </summary>
29 private void InitializeComponent()
30 {
31 this.btnStart = new System.Windows.Forms.Button();
32 this.label1 = new System.Windows.Forms.Label();
33 this.btnStop = new System.Windows.Forms.Button();
34 this.lPn = new System.Windows.Forms.ListBox();
35 this.txtNumber = new System.Windows.Forms.TextBox();
36 this.btnSuspend = new System.Windows.Forms.Button();
37 this.label2 = new System.Windows.Forms.Label();
38 this.txtEndNumber = new System.Windows.Forms.TextBox();
39 this.leven = new System.Windows.Forms.ListBox();
40 this.SuspendLayout();
41 //
42 // btnStart
43 //
44 this.btnStart.Location = new System.Drawing.Point(301, 8);
45 this.btnStart.Name = "btnStart";
46 this.btnStart.Size = new System.Drawing.Size(75, 23);
47 this.btnStart.TabIndex = 0;
48 this.btnStart.Text = "Start";
49 this.btnStart.UseVisualStyleBackColor = true;
50 this.btnStart.Click += new System.EventHandler(this.button1_Click);
51 //
52 // label1
53 //
54 this.label1.AutoSize = true;
55 this.label1.Location = new System.Drawing.Point(10, 13);
56 this.label1.Name = "label1";
57 this.label1.Size = new System.Drawing.Size(77, 12);
58 this.label1.TabIndex = 1;
59 this.label1.Text = "Start Number";
60 //
61 // btnStop
62 //
63 this.btnStop.Location = new System.Drawing.Point(487, 8);
64 this.btnStop.Name = "btnStop";
65 this.btnStop.Size = new System.Drawing.Size(75, 23);
66 this.btnStop.TabIndex = 4;
67 this.btnStop.Text = "Stop";
68 this.btnStop.UseVisualStyleBackColor = true;
69 this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
70 //
71 // lPn
72 //
73 this.lPn.FormattingEnabled = true;
74 this.lPn.ItemHeight = 12;
75 this.lPn.Location = new System.Drawing.Point(13, 50);
76 this.lPn.Name = "lPn";
77 this.lPn.Size = new System.Drawing.Size(114, 316);
78 this.lPn.TabIndex = 5;
79 //
80 // txtNumber
81 //
82 this.txtNumber.Location = new System.Drawing.Point(94, 8);
83 this.txtNumber.Name = "txtNumber";
84 this.txtNumber.Size = new System.Drawing.Size(55, 21);
85 this.txtNumber.TabIndex = 6;
86 this.txtNumber.Text = "3";
87 //
88 // btnSuspend
89 //
90 this.btnSuspend.Location = new System.Drawing.Point(391, 8);
91 this.btnSuspend.Name = "btnSuspend";
92 this.btnSuspend.Size = new System.Drawing.Size(75, 23);
93 this.btnSuspend.TabIndex = 7;
94 this.btnSuspend.Text = "Suspend";
95 this.btnSuspend.UseVisualStyleBackColor = true;
96 this.btnSuspend.Click += new System.EventHandler(this.btnSuspend_Click);
97 //
98 // label2
99 //
100 this.label2.AutoSize = true;
101 this.label2.Location = new System.Drawing.Point(155, 13);
102 this.label2.Name = "label2";
103 this.label2.Size = new System.Drawing.Size(65, 12);
104 this.label2.TabIndex = 8;
105 this.label2.Text = "End Number";
106 //
107 // txtEndNumber
108 //
109 this.txtEndNumber.Location = new System.Drawing.Point(226, 8);
110 this.txtEndNumber.Name = "txtEndNumber";
111 this.txtEndNumber.Size = new System.Drawing.Size(68, 21);
112 this.txtEndNumber.TabIndex = 9;
113 this.txtEndNumber.Text = "1000000";
114 //
115 // leven
116 //
117 this.leven.FormattingEnabled = true;
118 this.leven.ItemHeight = 12;
119 this.leven.Location = new System.Drawing.Point(179, 50);
120 this.leven.Name = "leven";
121 this.leven.Size = new System.Drawing.Size(374, 316);
122 this.leven.TabIndex = 10;
123 //
124 // Form1
125 //
126 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
127 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
128 this.ClientSize = new System.Drawing.Size(574, 377);
129 this.Controls.Add(this.leven);
130 this.Controls.Add(this.txtEndNumber);
131 this.Controls.Add(this.label2);
132 this.Controls.Add(this.btnSuspend);
133 this.Controls.Add(this.txtNumber);
134 this.Controls.Add(this.lPn);
135 this.Controls.Add(this.btnStop);
136 this.Controls.Add(this.label1);
137 this.Controls.Add(this.btnStart);
138 this.Name = "Form1";
139 this.Text = "Form1";
140 this.Load += new System.EventHandler(this.Form1_Load);
141 this.ResumeLayout(false);
142 this.PerformLayout();
143
144 }
145
146 #endregion
147
148 private System.Windows.Forms.Button btnStart;
149 private System.Windows.Forms.Label label1;
150 private System.Windows.Forms.Button btnStop;
151 private System.Windows.Forms.ListBox lPn;
152 private System.Windows.Forms.TextBox txtNumber;
153 private System.Windows.Forms.Button btnSuspend;
154 private System.Windows.Forms.Label label2;
155 private System.Windows.Forms.TextBox txtEndNumber;
156 private System.Windows.Forms.ListBox leven;
157 }
158 }
Form1.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Windows.Forms;
4 using System.Threading;
5
6 namespace Gedebahe
7 {
8 public partial class Form1 : Form
9 {
10 Thread t1;
11 public Form1()
12 {
13 InitializeComponent();
14 Form1.CheckForIllegalCrossThreadCalls = false;
15 }
16
17 private void Form1_Load(object sender, EventArgs e)
18 {
19
20 }
21
22 private void button1_Click(object sender, EventArgs e)
23 {
24 lPn.Items.Clear();
25 lPn.Items.Add(1);
26 pn = new List<int>();
27 pn.Clear();
28 pn.Add(1);
29 t1 = new Thread(CaculatePn);
30 t1.Start();
31 }
32
33
34 private void CaculatePn()
35 {
36 for (int i = int.Parse(txtNumber.Text); i < int.Parse(txtEndNumber.Text); i++)
37 {
38 if (i%2 == 0)
39 {
40 foreach (int j in pn)
41 {
42 if (pn.Contains(i - j))
43 {
44 leven.Items.Insert(0,i + "=" + j + "+" + (i - j));
45 break;
46 }
47
48 }
49 }
50 else
51 {
52 if (isPn(i))
53 {
54 pn.Add(i);
55 lPn.Items.Insert(0, i);
56 }
57
58 }
59 }
60 }
61
62 private List<int> pn;
63
64 private bool isPn(int _num)
65 {
66 bool _isPn = true;
67 if (_num == 1 || _num == 3||_num==5||_num==7) return true;
68 if (_num == 2 || _num == 4) return false;
69 int _sqrt = (int) Math.Ceiling(Math.Sqrt((double) _num));
70 foreach (int i in pn)
71 {
72 if(i==1) continue;
73 if (i < _sqrt)
74 {
75 if (_num%i == 0)
76 {
77 _isPn = false;
78 break;
79 }
80 }else break;
81 }
82 return _isPn;
83 }
84
85 private void btnStop_Click(object sender, EventArgs e)
86 {
87 t1.Abort();
88 }
89
90 private void btnSuspend_Click(object sender, EventArgs e)
91 {
92 if(t1.ThreadState == ThreadState.Running)
93 t1.Suspend();
94 else
95 {
96 t1.Resume();
97 }
98 }
99 }
100 }
2 using System.Collections.Generic;
3 using System.Windows.Forms;
4 using System.Threading;
5
6 namespace Gedebahe
7 {
8 public partial class Form1 : Form
9 {
10 Thread t1;
11 public Form1()
12 {
13 InitializeComponent();
14 Form1.CheckForIllegalCrossThreadCalls = false;
15 }
16
17 private void Form1_Load(object sender, EventArgs e)
18 {
19
20 }
21
22 private void button1_Click(object sender, EventArgs e)
23 {
24 lPn.Items.Clear();
25 lPn.Items.Add(1);
26 pn = new List<int>();
27 pn.Clear();
28 pn.Add(1);
29 t1 = new Thread(CaculatePn);
30 t1.Start();
31 }
32
33
34 private void CaculatePn()
35 {
36 for (int i = int.Parse(txtNumber.Text); i < int.Parse(txtEndNumber.Text); i++)
37 {
38 if (i%2 == 0)
39 {
40 foreach (int j in pn)
41 {
42 if (pn.Contains(i - j))
43 {
44 leven.Items.Insert(0,i + "=" + j + "+" + (i - j));
45 break;
46 }
47
48 }
49 }
50 else
51 {
52 if (isPn(i))
53 {
54 pn.Add(i);
55 lPn.Items.Insert(0, i);
56 }
57
58 }
59 }
60 }
61
62 private List<int> pn;
63
64 private bool isPn(int _num)
65 {
66 bool _isPn = true;
67 if (_num == 1 || _num == 3||_num==5||_num==7) return true;
68 if (_num == 2 || _num == 4) return false;
69 int _sqrt = (int) Math.Ceiling(Math.Sqrt((double) _num));
70 foreach (int i in pn)
71 {
72 if(i==1) continue;
73 if (i < _sqrt)
74 {
75 if (_num%i == 0)
76 {
77 _isPn = false;
78 break;
79 }
80 }else break;
81 }
82 return _isPn;
83 }
84
85 private void btnStop_Click(object sender, EventArgs e)
86 {
87 t1.Abort();
88 }
89
90 private void btnSuspend_Click(object sender, EventArgs e)
91 {
92 if(t1.ThreadState == ThreadState.Running)
93 t1.Suspend();
94 else
95 {
96 t1.Resume();
97 }
98 }
99 }
100 }
运行效果图