C#使用一种方法来检查数字是素数,而不是素数或负数

时间:2018-10-13 19:49:49

标签: c# loops methods

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

Assignment screenshot

我设法使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;
    }

如果有人知道怎么办,请让我知道。

您真诚的

Max van Kekeren

2 个答案:

答案 0 :(得分:1)

while循环之前,请用户至少输入一次。这将确保如果他们输入的第一个数字为0,程序将按预期结束。当前,它在第一次运行时使用1,然后要求用户输入并始终运行所有代码。至于您的if (entered_number < 0)语句,宁愿将所有代码作为else语句放置到此if语句中,以便如果数字为负数,则程序只要求用户再次输入即可。参见下面的示例(我省略了第一个建议,您需要自己进行一些编码: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();

答案 1 :(得分:1)

使用# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi ,您的代码将至少执行一次。

do while