C # использовать метод, чтобы проверить, является ли число простым, а не основным или отрицательным - PullRequest
0 голосов
/ 13 октября 2018

Для школьных заданий мы должны создать небольшую программу, которая использует метод bool для вычисления, является ли число простым или нет.Он также должен проверить, является ли число отрицательным.Если введен 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;
    }

Если кто-то знает, как, пожалуйста, дайте мне знать.

С уважением,

Макс ван Кекерен

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

используйте 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();
0 голосов
/ 13 октября 2018

Попросите пользователя ввести хотя бы один раз перед циклом 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...