• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

c# Program do znajdowania liczb pierwszych w zadanym przedziale

Object Storage Arubacloud
0 głosów
1,613 wizyt
pytanie zadane 12 stycznia 2018 w C# przez wojtek0802 Nowicjusz (170 p.)

Witam. Mam problem z tym zadaniem:

" 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. "

Potrafię wykonać taki program, jeśli podany jest tylko górny zakres liczb, tak wygląda wtedy  funkcja:
 

 static bool CzyIstnieje1(int n)
        {
            bool[] spr = new bool[n + 1];

            for (int i = 2; i < spr.Length; i++)
            {
                spr[i] = true;
            }

           
           for (int i = 2; i < spr.Length; i++)
            {
                if (spr[i]==true)
                {
                    for (int j = i*2; j<= n; j = j+i)
                    {
                        spr[j] = false;
                    }
                }
            }

            for (int i = 0; i < spr.Length; i++)
            {
                if (spr[i])
                {
                    return true;
                }
            }

            return false;
       }

NIestety mam problem gdy dolna wartość przedziału jest większa od dwóch, nie wiem jakie wtedy podać warunki w pętli. Ktoś ma jakiś pomysł?

2 odpowiedzi

0 głosów
odpowiedź 12 stycznia 2018 przez Neeq Obywatel (1,930 p.)
"Stwórz funkcję bool CzyIstnieje1(int a, int b)" nie powinieneś podesłać do funkcji CzyIstnieje 2 wartości int pierwsza "a"- początek pętli, "b" koniec pętli ?
komentarz 12 stycznia 2018 przez wojtek0802 Nowicjusz (170 p.)

Tę funkcję podałem jako przykład podobnego programu, który potrafię zrobić :)

Z problemem o który pytałem też mi się udało poradzić w ten sposób:

static void Liczbypierwsze(int a, int b)
        {
            bool[] spr = new bool[b + 1];
            for (int i = 2; i < spr.Length; i++)
            {
                spr[i] = true;
            }

            for (int i = 0; i < spr.Length; i++)
            {
                if (spr[i])
                {
                    for (int j = i*2; j <=b; j = j+i)
                    {
                        spr[j] = false;
                    }
                }
            }

            for (int i = 0; i < spr.Length; i++)
            {
                if (spr[i])
                {
                    return true;
                }
            }
        }

Moje pytanie brzmi teraz: czy istnieje jakiś prostszy sposób tak, aby nie tworzyc tablicy, która ma niepotrzebnie dużo elementów?

0 głosów
odpowiedź 13 stycznia 2018 przez pulson666 Stary wyjadacz (12,560 p.)
Zrób pętle które jako pierwszy warunek przyjmuje minimum i leci aż do naszego max np. For(int i = min; Mac >min; min+++)

Podobne pytania

+2 głosów
1 odpowiedź 351 wizyt
0 głosów
1 odpowiedź 807 wizyt
pytanie zadane 15 października 2017 w C i C++ przez Jolka Nowicjusz (120 p.)
0 głosów
1 odpowiedź 2,280 wizyt

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...