c# pętle, liczby pierwsze

0

Stwórz funkcję bool CzyIstnieje1(int a, int b) , która zwraca true, jeśli w przedziale obustronnie domkniętym [a;b] znajduje się liczba pierwsza. W przeciwnym wypadku funkcja zwraca false.
Nie mam kompletnie pomysłu na to zadanie, jedyne co mi się udało wymyśleć to:

static bool CzyIstnieje1(int a, int b)
        {
            for (int i = 0; a >= i && i <= b; i++)
            {
                if (b == 1 || b == 0)
                {
                    return false;
                }
                if (b == 2)
                {
                    return true;
                }
                if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0 && i % 9 != 0)
                {
                    return true;
                }
            }
            return false;
        }

niestety nie dokońca działa tak jak powinien, jakieś pomysły jak to poprawić? Ponadto mam jeszcze zadanie: Stwórz funkcję bool CzyIstnieje2(int a, int b) , która zwraca true, jeśli w przedziale obustronnie domkniętym [a;b] znajdują się dokładnie dwie liczby pierwsze. i nie mam kompletnie pomysłu na to 2..

1

skoro masz robic od A do B to petla powinna wygladac tak

for (int index = a; index <= b ; index++)
{
  if(CzyPierwsza(index))
  {
    return true;
  }
}
return false;
0

a jaki jest algorytm na sprawdzenie czy liczba jest pierwsza ?

0

O kurde czyli to nie będzie takie proste :D

0

nie mam pojęcia jak to ogarnąć

0

Przeczytałeś rozdział "Simple Methods"? Czego nie zrozumiałeś?

3

Tak by było prosto ,ale choć troszeczkę zoptymalizowane:

        static bool isPrime(long number)
        {
            if (number <= 1)
                return false;
            if (number <= 3)
                return true;

            if (number % 2 == 0 || number % 3 == 0)
                return false;

            long sqrtNumber = (long)Math.Sqrt(number);

            for (long i = 5; i  <= sqrtNumber; i += 6)
                if (number % i == 0 || number % (i + 2) == 0)
                    return false;

            return true;
        }

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