【问题标题】:C# use a method to check if number is Prime, not Prime or negativeC#使用一种方法检查数字是否为素数,不是素数或负数
【发布时间】:2018-10-13 19:49:48
【问题描述】:

对于学校练习学校作业,我们必须创建一个小程序,该程序使用 bool 方法来计算一个数字是否为素数。它还必须检查一个数字是否为负。如果输入 0,它将停止询问数字并结束程序。 (我添加了作业截图)

我已经成功完成了 Prime 检查部分。当我输入一个负数时,它会显示:负数,之后它仍然会计算它是否是素数。结束程序也是如此。它首先计算 0 是否为质数,然后结束它。

我该如何解决?

这是我的代码:

static void Main(string[] args)
    {

        int entered_number = 1;


        while (entered_number != 0)
        {

            //ask for user entry
            Console.Write("enter a number: ");
            entered_number = int.Parse(Console.ReadLine());

            if (entered_number < 0)
            {
                Console.WriteLine("Number is negative");
            }

            //variable for subprogram
            bool prime = IsPrimeNumber(entered_number);

            //output
            if (prime == true)
            {
                Console.WriteLine("Number is Prime");
            }

            else if (prime == false)
            {
                Console.WriteLine("Number is not Prime");
            }

        }

        Console.WriteLine("End of program");
        Console.ReadKey();


    }
    //subprogram
    static bool IsPrimeNumber(int entered_number)
    {
        //count
        int count = 0;

            for (int i = 1; i <= entered_number; i++)
            {
                if (entered_number % i == 0)
                {
                    count++;
                }
            }

            if (count == 2)
            {
                return true;
            }

            else if (count != 2 && entered_number != 0)
            {
                return false;
            }

        return false;
    }

如果有人知道怎么做,请告诉我。

此致,

马克斯·范科克伦

【问题讨论】:

标签: c# loops methods


【解决方案1】:

while 循环之前至少要求用户输入一次。这将确保如果他们输入的第一个数字是 0,程序将按预期结束。目前它在第一次运行时使用 1,然后要求用户输入并运行所有代码。至于您的if (entered_number &lt; 0) 语句,请将所有代码作为此 if 语句的 else ,这样如果数字为负数,您的程序只会再次要求用户输入。请参阅下面的示例(我省略了第一个建议,您需要自己进行一些编码:p):

while (entered_number != 0)
{

    //ask for user entry
    Console.Write("enter a number: ");
    entered_number = int.Parse(Console.ReadLine());

    if (entered_number < 0)
    {
        Console.WriteLine("Number is negative");
    }
    else 
    {
        //variable for subprogram
        bool prime = IsPrimeNumber(entered_number);

        //output
        if (prime == true)
        {
            Console.WriteLine("Number is Prime");
        }

        else if (prime == false)
        {
            Console.WriteLine("Number is not Prime");
        }
    }
}

Console.WriteLine("End of program");
Console.ReadKey();

【讨论】:

  • 也只是提个醒,你不需要说if (prime == true),如果是真的,你可以简单地说if (prime),如果是假的,你可以简单地说if (!prime)
【解决方案2】:

使用do while,您的代码将至少执行一次。

 int entered_number = 0;
        do
        {
            //ask for user entry
            Console.Write("enter a number: ");
            entered_number = int.Parse(Console.ReadLine());

            if (entered_number < 0)
            {
                Console.WriteLine("Number is negative");
            }
            else if (entered_number > 0)
            {
                Console.WriteLine(IsPrimeNumber(entered_number) ? "Number is Prime" : "Number is not Prime");
            }
            else
            {
                break;
            }
        }
        while (entered_number != 0);

        Console.WriteLine("End of program");
        Console.ReadKey();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多