繁体   English   中英

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

[英]C# use a method to check if number is Prime, not Prime or negative

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

作业截图

我设法使总理检查部分。 当我输入一个负数时,它将显示:负数,此后仍会计算它是质数是还是否。 与结束程序相同。 它首先计算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;
    }

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

此致,

马克斯·范·凯克伦

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();

使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM