素数和因子问题

1.1 问题描述

  1. 编写程序输出任意两个数之间的素数、指定数的倍数。输入两个数值,一个起始数值,一个终止数值,指定输出数值类型,如果是素数,则输出两个数值之间的所有素数;如果选择倍数,再输入一个因子,输出两个数值之间的所有因子倍数。每行输出4个数。
    比如,输入
    起始数值:1
    终止数值:10

选择素数输出:2 3 5 7

选择倍数
输入因子:3
选择倍数整数:3 6 9

1.2 解题思路
(问题分析,解题思路。(正文均为小四号,宋体))首先必须在在区间内的这段编程给限定好.在选择第一小问,选择素数输出,期间必须考虑到除去1这个数,后面进行判明素数.在第二小问,选择倍数输出,考虑的问题,是每行输出4个数,所以必须进行每行4个数限定。重中之重,注意辨别非法输入,如输入字母,字母等,我是利用异常处理使用 try、catch 和 finally 关键字尝试操作。

1.3 程序设计
(程序设计。列出各项本设计要达到的具体的目标。(正文均为小四号,宋体))
Prime窗体是实现选择素数输出的功能
第一,代码中需编写判断素数的功能。
第二,需要判断输入非法字符。
第三,需要设置每行四个输出。
Integer窗体是选整数倍数倍数输出的功能。
第一,代码中需判断是输入的数其倍数。
第二,需要判断输入非法字符。
第三,需要设置每行四个输出。
1.4 测试结果
1.测试方法:利用C#语言中window窗体来实现
2.关键功能测试的实现过程
创建2个窗体,分别为实现选择素数输出的功能的Prime窗体,实现选整数倍数倍数输出的功能的Integer窗体。在调用主窗体MainForm,实现其功能!
3.关键代码

1)Forms文件夹中的窗体:
   ①Integer窗体

{
    public partial class Integer : Form
    {
        public Integer()
        {
            InitializeComponent();
        }
        private void buttoncancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void buttonok_Click(object sender, EventArgs e)
        {
            textBoxResult.Clear();
            try
            {
                int a = int.Parse(textBox1.Text);
                int b = int.Parse(textBox2.Text);
                int c = int.Parse(textBox3.Text);
                int i;
                int count = 0;
                for (i = a; i < b+1;i++)
                {                //这里从a到b的区间
                     if (i % c == 0)
                    {
                     
                        if (count % 4 == 0 && count > 0)
                        { Console.WriteLine(); }
                        textBoxResult.Text += string.Format(i.ToString() + " ");
                        count++;
                    }
                    
                }
            }
            catch (Exception err)
            {
                textBoxResult.Text += "出错了:" + err.Message + Environment.NewLine;
            }
            finally
            {
                textBoxResult.Text += "\r\n再见" + Environment.NewLine;
            }
        }
    }
}
②Prime窗体

{
    public partial class Prime : Form
    {
        public Prime()
        {
            InitializeComponent();
        }
        public static Boolean isPrime(int a)
        {
            Boolean tag = true;
            if (a == 1)
                tag = false;
            else
            {
                for (int i = 2; i <= Math.Sqrt(a); i++)
                {
                    if (a % i == 0)
                    {
                        tag = false;
                        break;
                    }
                }
            }
            return tag;
        }
        private void button1_Click(object sender, EventArgs e)
        {      
            textBoxResult.Clear();
            try
            {
               int a = int.Parse(textBox1.Text);
               int b = int.Parse(textBox2.Text);
             
               int count = 0;
               for (int i = a; i < b; i++)
               {
                   if (isPrime(i))
                   {
                       count++;
                       if (count % 4 == 0 && count > 0)
                           Console.WriteLine();
                       textBoxResult.Text += string.Format(i.ToString() + " ");
                   }
               }
}
            catch (Exception err)
            {
                textBoxResult.Text += "出错了:" + err.Message + Environment.NewLine;
            }
            finally
            {
                textBoxResult.Text += "\r\n再见" + Environment.NewLine;
            }
        }
        private void buttonCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        
    }
}2)主窗体MainForm

{
    public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
            buttonOK.Click += buttonOK_Click;
            this.StartPosition = FormStartPosition.CenterScreen;
        }

        void buttonOK_Click(object sender, EventArgs e)
        {

            foreach (var v in groupBox1.Controls)
            {
                RadioButton r = v as RadioButton;
                if (r.Checked == true) ShowExample(r.Name);
            }
        }

        private void ShowExample(string name)
        {
            Form fm = null;
            switch (name)
            {
                case "sushu": fm = new Prime(); break;
                case "zhengshu": fm = new Integer(); break;
               
            }
            if (fm != null)
            {
                fm.Owner = this;
                fm.StartPosition = FormStartPosition.CenterParent;
                fm.ShowDialog(this);
            }
            else
            {
                MessageBox.Show("未找到对应示例!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

4.测试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值