Liczby pierwsze zadanie spoj

Odpowiedz Nowy wątek
Trzeźwy Mleczarz
2018-03-04 10:52
Trzeźwy Mleczarz
0

Witam, robię zadania na spoju "Łatwe" i jestem na etapie programu liczby pierwsze. Test mi nie przechodzi ze względu na długi czas działania.
Jak mogę to usprawnić?
https://ideone.com/Pd5MuZ

using System;

namespace LiczbyPierwsze
{

    class Program
    {
        static void Main(string[] args)
        {

            string numberOfTestRL = Console.ReadLine();
            int numberOfTest = Convert.ToInt32(numberOfTestRL);

            if(numberOfTest >= 1 && numberOfTest <= 100000)
            {
                int counter = 0;
                bool running = true;
                while (running == true)
                {
                    string numberRL = Console.ReadLine();
                    int number = Convert.ToInt32(numberRL);

                    if (numberOfTest >= 1 && numberOfTest <= 10000)
                    {
                        int devide = 0;
                        double checker = 0.0;
                        for (int i = 1; i <= number; i++)
                        {
                            checker = number % i;
                            if (checker == 0.0)
                            {
                                devide++;
                                if(devide>2)
                                {
                                    break;
                                }
                            }
                        }
                        if (devide == 2)
                        {
                            Console.WriteLine("Tak");
                        }
                        else
                        {
                            Console.WriteLine("Nie");
                        }
                        counter++;
                        if (counter == numberOfTest)
                        {
                            running = false;
                        }
                    }
                }
            }
        }
    }

}

Pozostało 580 znaków

Krwawy Ogórek
2018-03-04 11:05
Krwawy Ogórek
0

Jak to usprawnić? np:

https://pl.wikipedia.org/wiki[...]ierwszo%C5%9Bci#Metoda_naiwna

for (int i = 1; i <= number; i++)
{
    checker = number % i;
    if (checker == 0.0)
    {
        devide++;
        if(devide>2)
        {
            break;
        }
    }
}

Pozostało 580 znaków

2018-03-04 12:59

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

Jakiś jest temat zadania?


Pozostało 580 znaków

Trzeźwy Mleczarz
2018-03-04 13:24
Trzeźwy Mleczarz
0

http://pl.spoj.com/problems/PRIME_T/

Pozostało 580 znaków

2018-03-04 13:34

Rejestracja: 3 lata temu

Ostatnio: 1 godzina temu

0

https://en.m.wikipedia.org/wiki/Primality_test
Zobacz jak usprawnic trial division I Moze lyknie:)


Pozostało 580 znaków

Trzeźwy Mleczarz
2018-03-04 20:36
Trzeźwy Mleczarz
0

Dzięki za odpowiedzi ;)

Poszło?:) - lion137 2018-03-04 20:37

Pozostało 580 znaków

2018-03-04 20:46

Rejestracja: 8 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Łódź

0
if(number%2==0) devide=0;
else {
for (int i = 1; i <= number; i+=2)
{
    checker = number % i;
    if (checker == 0.0)
    {
        devide++;
        if(devide>2)
        {
            break;
        }
    }
}
}

Każdy programista przybywający z innego miasta jest fachowcem.
edytowany 1x, ostatnio: gk1982, 2018-03-04 20:51

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0