亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#查找素數實現方法

2020-01-24 02:33:15
字體:
來源:轉載
供稿:網友

本文所述為C#查找素數的程序代碼,包括了可視化窗體的代碼,找素數的方法可以借鑒。雖然實現的功能簡單,不過為了演示一些C#技巧,本文實例中還用到了線程技術、ListBox列表框的使用、設置程序掛起等操作,其中備有詳盡的注釋,幫助大家更好的理解。

具體實現代碼如下:

using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.Threading;namespace SuspendAndResume{ public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.ListBox listBox1; private System.Windows.Forms.Button button1; private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button3; private System.Windows.Forms.Button button4; private System.Windows.Forms.Label label2; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; //公共委托,用于輸出素數 public delegate void UD(string returnVal); //聲明私有線程 private Thread pNT; //用于標識是否掛起線程 bool suspend = false; //用于標識線程時候開始運行 bool pNTstart = false; public Form1() {  InitializeComponent();  // TODO: 在 InitializeComponent 調用后添加任何構造函數代碼 } protected override void Dispose( bool disposing ) {  if( disposing )  {  if (components != null)  {   components.Dispose();  }  }  base.Dispose( disposing ); } #region Windows 窗體設計器生成的代碼 private void InitializeComponent() {  this.components = new System.ComponentModel.Container();  this.label1 = new System.Windows.Forms.Label();  this.listBox1 = new System.Windows.Forms.ListBox();  this.button1 = new System.Windows.Forms.Button();  this.button2 = new System.Windows.Forms.Button();  this.button3 = new System.Windows.Forms.Button();  this.button4 = new System.Windows.Forms.Button();  this.label2 = new System.Windows.Forms.Label();  this.timer1 = new System.Windows.Forms.Timer(this.components);  this.SuspendLayout();  // label1  this.label1.Location = new System.Drawing.Point(8, 8);  this.label1.Name = "label1";  this.label1.TabIndex = 0;  this.label1.Text = "已找到的素數:";  // listBox1  this.listBox1.ItemHeight = 12;  this.listBox1.Location = new System.Drawing.Point(8, 32);  this.listBox1.MultiColumn = true;  this.listBox1.Name = "listBox1";  this.listBox1.Size = new System.Drawing.Size(272, 136);  this.listBox1.TabIndex = 1;  // button1  this.button1.Location = new System.Drawing.Point(19, 184);  this.button1.Name = "button1";  this.button1.Size = new System.Drawing.Size(48, 23);  this.button1.TabIndex = 2;  this.button1.Text = "創建";  this.button1.Click += new System.EventHandler(this.button1_Click);  //  // button2  //  this.button2.Location = new System.Drawing.Point(88, 184);  this.button2.Name = "button2";  this.button2.Size = new System.Drawing.Size(48, 23);  this.button2.TabIndex = 3;  this.button2.Text = "掛起";  this.button2.Click += new System.EventHandler(this.button2_Click);  //  // button3  //  this.button3.Location = new System.Drawing.Point(157, 184);  this.button3.Name = "button3";  this.button3.Size = new System.Drawing.Size(48, 23);  this.button3.TabIndex = 4;  this.button3.Text = "恢復";  this.button3.Click += new System.EventHandler(this.button3_Click);  //  // button4  //  this.button4.Location = new System.Drawing.Point(226, 184);  this.button4.Name = "button4";  this.button4.Size = new System.Drawing.Size(48, 23);  this.button4.TabIndex = 5;  this.button4.Text = "銷毀";  this.button4.Click += new System.EventHandler(this.button4_Click);  //  // label2  //  this.label2.Location = new System.Drawing.Point(24, 224);  this.label2.Name = "label2";  this.label2.Size = new System.Drawing.Size(200, 23);  this.label2.TabIndex = 6;  this.label2.Text = "線程未啟動";  //  // timer1  //  this.timer1.Enabled = true;  this.timer1.Tick += new System.EventHandler(this.timer1_Tick);  //  // Form1  //  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);  this.ClientSize = new System.Drawing.Size(292, 266);  this.Controls.Add(this.label2);  this.Controls.Add(this.button4);  this.Controls.Add(this.button3);  this.Controls.Add(this.button2);  this.Controls.Add(this.button1);  this.Controls.Add(this.listBox1);  this.Controls.Add(this.label1);  this.Name = "Form1";  this.Text = "素數";  this.Load += new System.EventHandler(this.Form1_Load);  this.ResumeLayout(false); } #endregion /// <summary> /// 應用程序的主入口點。 /// </summary> [STAThread] static void Main() {  Application.Run(new Form1()); } private void button1_Click(object sender, System.EventArgs e) {  //創建線程實例,設置屬性  pNT = new Thread(new ThreadStart(GPN));  pNT.Name = "Prime Numbers Exaple";  pNT.Priority = ThreadPriority.BelowNormal;  //設置按鍵,停用開始按鍵,啟用掛起按鍵和銷毀按鍵  button1.Enabled = false;  button2.Enabled = true;  button4.Enabled = true;  //線程開始,并設置標識  pNT.Start();  pNTstart = true; } private void button2_Click(object sender, System.EventArgs e) {  //設置掛起bool變量為真  suspend = true;  //設置按鍵,停用掛起按鍵, 啟用恢復按鍵  button2.Enabled = false;  button3.Enabled = true; } private void button3_Click(object sender, System.EventArgs e) {  //設置掛起bool變量為假  suspend = false;  //當線程當前狀態為掛起時,恢復該線程  if(pNT.ThreadState == System.Threading.ThreadState.Suspended  || pNT.ThreadState == System.Threading.ThreadState.SuspendRequested)  {  try  {   //恢復線程   pNT.Resume();   //設置按鍵,停用恢復按鍵,啟用掛起按鍵   button3.Enabled = false;   button2.Enabled = true;  }  catch(ThreadStateException Ex)  {   MessageBox.Show(Ex.ToString(), "提示");  }  } } private void button4_Click(object sender, System.EventArgs e) {  //設置按鍵,啟用開始按鍵,停用其他按鍵  button1.Enabled = true;  button2.Enabled = false;  button3.Enabled = false;  button4.Enabled = false;  //銷毀線程  pNT.Abort(); } //GPN為GetPrimeNumber的縮寫,用于查找并顯示素數 public void GPN() {  //聲明變量  long Counter;  //素數個數  long NumberNow;  //當前數  long SqrtOfNow;  //輔助數,做數組下標  bool IsPrime = false; //標識是否為素數  //數組,用于存儲已找到素數  long[] PrimeArray = new long[256];  //委托,用于顯示素數,即將其添加到ListBox中  string[] args = new string[] {"2"};  UD UIDel = new UD(UpdateUI);  //初始化,從3開始計算,從第2個素數開始計算  NumberNow = 3;  Counter = 2;  //添加2為素數,放入素數數組并將其顯示  PrimeArray[1] = 2;  this.Invoke(UIDel, args);  //循環,用于找到并輸出256個素數  while(Counter <= 255)  {  IsPrime = true;  //從1到當前數的平方根,窮盡計算是否為素數  for(SqrtOfNow = 1; (PrimeArray[SqrtOfNow]   * PrimeArray[SqrtOfNow] <= NumberNow);   SqrtOfNow++)  {   //若能被已找到的素數整除,則不是素數   if(NumberNow % PrimeArray[SqrtOfNow] == 0)   {   //若不是素數,跳出for循環   IsPrime = false;   break;   }  }  //若為素數,將其添加到ListBox以顯示  if(IsPrime)  {   //將素數存入數組中儲存   PrimeArray[Counter] = NumberNow;   Counter++;   //將素數顯示到ListBox中   args[0] = NumberNow.ToString();   this.Invoke(UIDel,args);   //利用bool變量,控制是否掛起線程   if( suspend == true)   {   //調用Suspend方法,并捕捉異常   try   {    pNT.Suspend();   }   catch(ThreadStateException Ex)   {    MessageBox.Show(Ex.ToString(), "提示");   }   }   //使線程睡眠,使過程清楚顯示,且有時間掛起線程   Thread.Sleep(500);  }  //除2外,素數必為奇數,故跳過偶數的檢查,優化算法  NumberNow += 2;  } } //更新ListBox的方法 void UpdateUI(string result) {  listBox1.Items.Add(result); } //利用Timer控件顯示線程當前狀態 private void timer1_Tick(object sender, System.EventArgs e) {  //在線程開時候再獲取狀態并顯示  if( pNTstart )  {  label2.Text = "線程當前狀態是:" + pNT.ThreadState.ToString();  } } private void Form1_Load(object sender, System.EventArgs e) {  //設置按鍵,啟用開始按鍵,停用其他按鍵  button1.Enabled = true;  button2.Enabled = false;  button3.Enabled = false;  button4.Enabled = false; } }}

感興趣的讀者可以動手調試一下該程序代碼,相信會有一定的啟發與借鑒價值。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久热爱精品视频线路一| 亚洲一区二区久久| 午夜精品久久久久久久白皮肤| 国产精品大陆在线观看| 色妞在线综合亚洲欧美| 国产精品99蜜臀久久不卡二区| 久久久亚洲福利精品午夜| 欧美性受xxxx黑人猛交| 久久久久99精品久久久久| 亚洲精品中文字| 欧美噜噜久久久xxx| 狠狠躁夜夜躁久久躁别揉| 精品久久久久久亚洲精品| 欧美成人精品一区| 国产精品久久久久久久久免费看| 成人免费大片黄在线播放| 91免费的视频在线播放| 成人免费看黄网站| 欧美成人小视频| 91久久精品日日躁夜夜躁国产| 亚洲精品免费一区二区三区| 91亚洲精品久久久| 欧美最顶级丰满的aⅴ艳星| 日韩在线不卡视频| 中文字幕免费精品一区高清| 亚洲丝袜一区在线| 国产精品入口日韩视频大尺度| 日韩欧美国产成人| 在线成人中文字幕| 欧美另类99xxxxx| 国产亚洲精品久久久优势| 亚洲tv在线观看| 日韩国产在线播放| 国产脚交av在线一区二区| 久久99国产精品自在自在app| 国产ts一区二区| 韩国精品久久久999| 亚洲激情 国产| 国产精品色婷婷视频| 久久久亚洲国产天美传媒修理工| 色偷偷综合社区| 69久久夜色精品国产69| 国产精品美女久久| 国产欧美日韩高清| 日韩欧美成人免费视频| 亚洲视频第一页| 国产精品久久久久久久久久久久| 欧美福利视频网站| 成人疯狂猛交xxx| 91精品国产91久久久久| 精品国偷自产在线视频99| 中文字幕在线精品| 日韩精品在线私人| 亚洲国产精品女人久久久| 久久久www成人免费精品| 亚洲天堂成人在线视频| 欧美激情一区二区三区久久久| 2018国产精品视频| 国模精品系列视频| 美女久久久久久久久久久| 日韩电影大全免费观看2023年上| 久久精品国产一区二区电影| 国产亚洲成av人片在线观看桃| 国产精品视频免费在线观看| 亚洲天堂2020| 国产精品美女久久久久av超清| 亚洲国产又黄又爽女人高潮的| 国产视频观看一区| 欧美日韩免费网站| 九九热这里只有精品6| 日韩成人av在线| 亚洲国产成人av在线| 一道本无吗dⅴd在线播放一区| 国产在线观看精品一区二区三区| 91理论片午午论夜理片久久| 亚洲第一区在线| 亚洲美女av在线播放| 亚洲成人a级网| 亚洲免费中文字幕| 热99精品只有里视频精品| 久久国产精品久久久久| 日本精品一区二区三区在线| 国产日韩欧美在线观看| 一区二区三区精品99久久| 国产精品美腿一区在线看| 欧美色另类天堂2015| 91久久精品久久国产性色也91| 成人动漫网站在线观看| 亚洲精品影视在线观看| 日韩电影在线观看永久视频免费网站| 欧美日韩国产麻豆| 欧美激情第99页| 精品亚洲夜色av98在线观看| 在线观看精品自拍私拍| 精品中文字幕视频| 国产精品电影网站| 亚洲最大的成人网| 欧美夜福利tv在线| 91国产美女视频| 欧洲中文字幕国产精品| 欧美日韩另类字幕中文| 国产精品h在线观看| 精品美女久久久久久免费| 精品久久久久久中文字幕大豆网| 欧美成人午夜免费视在线看片| 91精品视频一区| 在线成人免费网站| 国产中文欧美精品| 亚洲无限乱码一二三四麻| 韩国欧美亚洲国产| 欧美激情一区二区三区成人| 国产精品网站视频| 久久免费视频在线观看| 色先锋久久影院av| 日韩中文字幕在线观看| 欧美性猛交xxxx| 在线播放亚洲激情| 亚洲无限乱码一二三四麻| 精品久久久久久亚洲国产300| 欧美精品免费在线| 欧美性色19p| 97**国产露脸精品国产| 亚洲第一网站男人都懂| 国内精品久久久久久中文字幕| 国产精品∨欧美精品v日韩精品| 国产va免费精品高清在线观看| 日韩一区二区久久久| 日韩成人激情在线| 日韩av电影国产| 国产亚洲精品久久久久久777| 欧美在线视频观看| 欧美性生活大片免费观看网址| 亚洲老头老太hd| 亚洲国产天堂久久综合网| 在线色欧美三级视频| 伊人久久免费视频| 日韩精品免费在线视频观看| 国产精品亚洲аv天堂网| 美女999久久久精品视频| 最近2019年中文视频免费在线观看| 亚洲国产精品va在线观看黑人| 欧美国产极速在线| 久久精品久久久久久国产 免费| 色噜噜国产精品视频一区二区| 亚洲系列中文字幕| 亚洲高清色综合| 欧美亚洲另类视频| 国产精品一区电影| 在线观看成人黄色| 欧美精品videosex性欧美| 欧美日韩国产成人| 97超级碰在线看视频免费在线看| 中文一区二区视频| 久久久久成人网| 91精品在线影院| 91在线精品视频| 日韩欧美a级成人黄色| 国产精品久久99久久| 亚洲人免费视频| 一区二区欧美久久| 91亚洲精品久久久| 亚洲黄一区二区| 在线精品国产成人综合| 国内精品久久久久久中文字幕|