【练习】哥德巴赫猜想验证程序

一个练习的程序,分为两部分。左边列表显示算出的素数,右边显示每个偶数的两个奇素数之和。

程序很简陋,还请大家多提意见。

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  }

 

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 % ==   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  }

 

运行效果图

【练习】哥德巴赫猜想验证程序

你可能感兴趣的:(验证)