Prime Check bgcoder 50/100


0

Здравейте,

output ите са както трябва но доста тестове пускат гръмотевици :D, моля да хвърлите един поглед:

using System;

namespace PrimeCheck
{
    class PrimeCheck
    {
        static void Main()
        {
            int number = int.Parse(Console.ReadLine());
            double SqrtNumber = Math.Sqrt(number);
            string isPrime = "true";

            if (number < 2)
            {
                isPrime = "false";
            }

        
            while (number <= SqrtNumber)
            {
                if (number % 2 == 0)
                {
                    isPrime = "false";
                    break;
                }

                number++;
            }

            Console.WriteLine(isPrime);
        }
    }
}




Отговори



0

С проверката if(number % 2 == 0) хващаш само четните числа, трябва да проверяваш дали числото се дели без остатък на всички числа от 2 до корен от числото. Например 9 % 2 != 0, но 9 не е просто.

Освен това, в while цикъла изобщо не се влиза, защото number <= SqrtNumber само, когато number = 1, а и да се влизаше, това, което този цикъл би направил е да сетне isPrime на "false" и да прекъсне в първия момент, в който number е четно. За проверка дали е просто някакво число ти трябва цикъл от 2 до корен от числото и проверка дали числото се дели на i без остатък, например:

bool isPrime = true; for (int i = 2; i <= Math.Sqrt(input); i++) { if (input%i == 0) { isPrime = false; break; } }


от topalkata (6442 точки)


0

Благодаря,

просто смених while а

while (startCounter <= SqrtNumber)
{
if (number % startCounter == 0)
{
isPrime = "false";
break;
}

startCounter++;
}


от toky90 (55 точки)

0
Да, така изглежда ОК, успех с другите задачи

от topalkata (6442 точки)


1

можеш да пробваш с един for ( int i = 1, i<=Math.Sqrt (number), i++)

{

if (number%i==0)

count ++;

}

if count > 1 => number is not prime.

Count - следи броя на делителите на числото.




1

Не съм го пробвал, но както колегата горе каза, не ги делих на всички а само на четните a и пропусках да почва от 2.


от toky90 (55 точки)