C#之小练⑥(C#求质数:含流程图、代码)

一、概念类

①、什么是质数?

质数(prime number)又称素数,有无限个。

质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因素。

二、流程类

①、求质数(不含方法的求法)

C#之小练⑥(C#求质数:含流程图、代码)_第1张图片

②、求质数(含方法的求法)

C#之小练⑥(C#求质数:含流程图、代码)_第2张图片

三、代码类

①、求质数(不含方法的求法)

 static void Main(string[] args)
        {
            while(true)                                       //无限循环,直至遇到break语句 
            {
                Console.WriteLine("请输入数字");              //在控制台上输入内容   
                string strnumber = Console.ReadLine();        //读取控制台数据,并将其赋值给变量
                if (strnumber=="q")                           //如果变量的内容为"q"
                {
                    break;                                    //跳出循环
                }
                else                                          //否则
                {
                    int number = Convert.ToInt32(strnumber);  //将字符串变量转换为int类型变量number
                    for (int i = 2; i < number; i++)          //for循环,从2开始
                    {
                        if (number % i == 0)                  //如果输入数字除i取余为零
                        {
                            Console.WriteLine("不是质数");    //则在控制台写入内容:不是质数
                        }
                    
                    }
                    Console.WriteLine("是质数");              //否则,则在控制台输入:是质数
                }

            }
        }

 ②、求质数(含方法的求法)

        static void Main(string[] args)
        {   //在整个代码逻辑的梳理中精简很重要,尽量减少不必要的冗余,比如可采用方法调方法
            //1、有些可以不用设置方法,我的判q采用了方法,反而使问题变复杂了
            //2、出现bug原来还可以通过提示来躲避,并非一定要深究那个问题(小杨老师说的^_^)
            //3、方法的返回值是很灵活的,不仅仅局限在bool类型
             
            while(true)                                       //无限循环  
            {
                Console.WriteLine("请输入数字,输入q退出");   //在控制台输入内容
                string str = Console.ReadLine();              //读取控制台内容,并赋值给变量str
                if (str == "q")                               //如果字符串变量str="q"
                {
                    break;                                    //那么,直接退出循环
                }
                else
                {
                    int number = IsNumber(str);               //调用IsNumber方法判断str是否为数字,并将返回值赋予给int类型变量
                    bool result = IsPrime(number);            //调用IsPrime方法,判断number是否为质数,并将返回值赋值给bool类型变量     
                    if (result)                               //如果result=true
                    {
                        Console.WriteLine("该数字为质数");    //在控制台写入内容
                        break;                                //退出当前循环
                    }
                    else
                    {
                        Console.WriteLine("该数字不是质数");  //在控制台写入内容
                    }
                }  
            }
        }

        public static bool IsPrime(int  strnumber)   
        {
            for (int i = 2; i < strnumber; i++)              //把用户传过来的数和这个数之前除了1和自身以外的数进行整除取余
            {
                if (strnumber % i == 0)                      //如果取余结果为0              
                return false;                                //返回false
            }
                return true;                                 //否则,返回true
        }
        public static int IsNumber(string strnumber)
        {
                while (true)          
                {
                    try                                                           //使用try语句

                    {
                        int number = Convert.ToInt32(strnumber);                 //尝试将字符串转换为int类型
                        return number;                                           //只有转换成为才会执行本段代码,返回number
                    }
                    catch                                                        //出现错误,则会跳转到catch语句                           
                    {
                        Console.WriteLine("您输入的不是数字,请重新输入数字");   //有可能会出现bug的地方,通过提示来告知,躲过bug
                        strnumber = Console.ReadLine();                          //读取控制台数据并赋值给strnumber变量
                    }
                }
          }

     以上便是求质数的小小练习,欢迎各位大神给予指点^_^

你可能感兴趣的:(【C#】)