• 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

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
95 wizyt
pytanie zadane 12 stycznia w C# i .NET 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 przez Neeq Użytkownik (680 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 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 przez pulson666 Dyskutant (7,630 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

0 głosów
2 odpowiedzi 135 wizyt
pytanie zadane 7 listopada 2017 w C i C++ przez mn130496 Obywatel (1,380 p.)
0 głosów
1 odpowiedź 107 wizyt
0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 15 października 2017 w C i C++ przez Jolka Nowicjusz (120 p.)
Porady nie od parady
Zadając pytanie postaraj się o poprawną pisownię i czytelne formatowanie tekstu.
Ciekawy innych porad? Odwiedź tę stronę!

44,296 zapytań

84,112 odpowiedzi

167,460 komentarzy

21,201 pasjonatów

Przeglądających: 148
Pasjonatów: 7 Gości: 141

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...