A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穆玉明 中级黑马   /  2013-6-12 15:17  /  1477 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 穆玉明 于 2013-6-12 22:43 编辑

//重复让用户输入一个数,判断是否是质数,输入q结束
        static void Main(string[] args)
        {
           string  input="";

           int number = 0;
            bool reasult;
            do
            {   Console.WriteLine("请输入一个正数");
                input = Console.ReadLine();
                if (input=="q")
                {
                    Console.WriteLine("程序结束");
                    break;
                }
                try
                {
                     
                    number=Convert.ToInt32(Console.ReadLine());
                    reasult=ZhiShu(number);
                    if (reasult==true)
                    {
                        Console.WriteLine("{0}是质数",number);
                    }
                    else
                    {
                        Console.WriteLine("{0}不是质数",number);
                    }
                }
                catch
                {
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                }
            }while(true);           
            Console.ReadKey();
        }
        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number;i++ )
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number%i==0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }



具体问题;我输入内容得输入两次才能判断   怎么实现我输入一次就行

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

5 个回复

倒序浏览
   try
            {
                string input = "";

                input = Console.ReadLine();
                if (input == "q")
                {
                    Console.WriteLine("程序结束");

                }
                int number = 0;
                bool reasult;
                do
                {
                    Console.WriteLine("请输入一个正数");



                    number = Convert.ToInt32(Console.ReadLine());
                    reasult = ZhiShu(number);
                    if (reasult == true)
                    {
                        Console.WriteLine("{0}是质数", number);
                    }
                    else
                    {
                        Console.WriteLine("{0}不是质数", number);
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                    }


                  


                } while (true);
                Console.ReadKey();
            }
            catch (Exception)
            {

                Console.WriteLine("退出程序");
            }

           
        }

        public static bool ZhiShu(int number)
        {
            for (int i = 2; i < number; i++)
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number % i == 0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }


修改了下。可以判断是不是是质数了。  那个 输入 P 退出的我不知道
    所以用了个 try  catch  后 输入的是字母就退出程序

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
我做出的修改:
1、将Console.ReadLine()改为input
2、加了一个 if, 判断 number是否为正数
3、对zhishu()函数做了修改,确定1不是质数

代码如下:
static void Main(string[] args)
        {
            string input = "";

            int number = 0;
            bool reasult;
            do
            {
                Console.WriteLine("请输入一个正数");
                input = Console.ReadLine();
                if (input == "q")
                {
                    Console.WriteLine("程序结束");
                    break;
                }
                try
                {

                    number = Convert.ToInt32(input);                    //将Console.ReadLine()改为input
                    if (number > 0)                //判断number是不是正数
                    {
                        reasult = ZhiShu(number);
                        if (reasult == true)
                        {
                            Console.WriteLine("{0}是质数", number);
                        }
                        else
                        {
                            Console.WriteLine("{0}不是质数", number);
                        }
                    }
                    else
                    {
                        Console.WriteLine("对不起,您输入的不是正数");
                        continue;
                    }
                    
                }
                catch
                {
                    Console.WriteLine("您的输入有误,请重新输入");
                    continue;
                }
            } while (true);
            Console.ReadKey();
        }
        public static bool ZhiShu(int number)
        {
            if (number == 1)                        //1不是质数,也不是合数
                return false;
            for (int i = 2; i < number; i++)
            {//不能被自身或者1整除的数,由于i不可能等于number
                if (number % i == 0)
                {
                    return false;//条件一旦成立,说明不是质数了
                }
            }
            return true;
        }

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报 1 0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 质数
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("请您输入一个数:");
                string str = Console.ReadLine();
                if ("q" == str)
                {
                    Console.WriteLine("您输入的数字为q,请按任意键退出程序....");
                    break;
                }
                int number;
                if (int.TryParse(str, out number) == false)
                {
                    Console.WriteLine("您输入的数不合法,请重新输入");
                    continue;
                }

               bool flag = isZhiShu(number);

                    if(flag)
                        Console.WriteLine("您输入的数字{0},是质数", number);

                    else
                        Console.WriteLine("您输入的数字{0},不是质数", number);              
            }
            Console.ReadKey();
        }
        //判断是否是质数
        static bool isZhiShu(int a)
        {
            bool flag = true;
            for (int i = 2; i < a; i++)
            {
                if (a % i == 0)
                {
                    flag = false;
                    break;
                }
            }
            return flag;
        
        }
    }

}
你可以参考下,如有不妥请指出。谢谢

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
输入两次才判断是因为在 number=Convert.ToInt32(Console.ReadLine());……这里再次Console.Readline了一次。可以把这里换成number = Convert.ToInt32(input);就好了

搜狗截图_2013-06-12_19-05-31.png (20.61 KB, 下载次数: 0)

搜狗截图_2013-06-12_19-05-31.png

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
你的代码能实现题目所述的功能。      具体问题;我输入内容得输入两次才能判断   怎么实现我输入一次就行????这句话不懂!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马