素数算法判断一个数是否是素数C#实现
素数:首先是一个大于1的整数,除了一和它本身不能别任何数整除。
今天我就来实现素数的算法,通过算法来判定一个数是不是素数,并得到100以内的素数。程序执行界面图如下:
操作方法
- 01
打开visual studio软件,进入菜单“文件”->新建->新建项目。 选择windows窗体程序,项目名为“SuShu”。
- 02
在窗体上添加控件: lable控件,text值为“输入一个数,判断是否是素数”; 一个textbox控件(tb_inputvalue),用来输入要判断的素数。 一个按钮“判断”(btn_pd),判断是不是素数。 一个大按钮(btn_hq),获取前一百的素数 用richTextBox1来保存获取到的素数。
- 03
素数设计算法
- 04
素数设计算法: 取消检测区间,提高程序效率。 我们可以只判断2到n/2之间的数,就可以知道他是不是素数了,因为2*n/2等价于n/2*2,其实我们还可以进一步的缩短区间。我们知道 x^2=n,那么n可能等于(x-a)*(x+b),同理(x+b)*(x-a)同一个表达式,那么我们完全可以只判断2-根号下n这个区间就可以了。 public bool sushu(int value) { double n= Math.Round(Math.Sqrt(value)); // MessageBox.Show(n.ToString()); for (int i = 2; i <=n; i++) { if (value % 2 == 0) return false; } return true; }
- 05
获取前100之间的所有素数:从2到一百挨个判断,是素数就记录下来。 private void btn_hq_Click(object sender, EventArgs e) { for (int i = 2; i <= 100; i++) { if (sushu(i)) { richTextBox1.AppendText(i + "\t"); } } }
- 06
判断一个数是不是素数: if (sushu(Int32.Parse(tb_inputvalue.Text))) { MessageBox.Show(tb_inputvalue.Text + " 是素数"); } else { MessageBox.Show(tb_inputvalue.Text + " 不是素数"); }
- 07
编译运行程序,我们输入67,检测67是不是素数。根据执行结果是素数和实际符合。
- 08
编译运行程序,获得前100的素数