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

Liczby Pół pierwsze

Object Storage Arubacloud
0 głosów
972 wizyt
pytanie zadane 10 stycznia 2019 w Java przez krawiecki Początkujący (490 p.)

Treść zadania:

Liczbą półpierwszą nazywamy taką liczbę, która jest iloczynem dwóch liczb pierwszych. Sprawdź czy podana liczba w reprezentacji binarnej jest liczbą półpierwszą.

Tu jest moja metoda która powinna to sprawdzać

static boolean checkIfIsSemiFirstNumber(String str) {

        int decNum = Integer.parseInt(str, 2); // zamiana na dziesietna liczbe

        List<Integer> primeNumbers = new ArrayList<>();
// generowanie liczb pierwszych
        for (int i = 1; i <= decNum ; i++) {
            int counter = 0;

            for (int j = 1; j <= i; j++) {

                if (i % j == 0) counter++;
            }

            if (counter == 2) primeNumbers.add(i);
        }
// sprawdzanie
        for (int i=0; i<primeNumbers.size(); i++) {

            for (int j = 0; j < primeNumbers.size() ; j++){
                if (primeNumbers.get(i)*primeNumbers.get(j) == decNum) return true;
            }
        }
        return false;
    }

W rozwiązaniu chodziło mi o to, żeby wygenerować listę liczb pierwszych od 1 do n i następnie mnożąc wszystkie przez wszystkie sprawdzić czy któraś para jest równa sprawdzanej liczbie. Nie uznałbym tego rozwiązania za seksowne ale powinno działać, a nie mogę znaleźć tutaj błędu.

komentarz 11 stycznia 2019 przez MikDal Mądrala (5,660 p.)
edycja 11 stycznia 2019 przez MikDal
Seksowności rozwiązania oceniać nie będę - wole podziwiać inne cuda natury :). Jeśli chcesz pomocy, to prosiłbym o podanie danych przykładowych oraz wyników zwracanych przez program - w momentach w których się myli i w których wykonuje poprawnie.

1 odpowiedź

0 głosów
odpowiedź 11 stycznia 2019 przez kejm_ Bywalec (2,310 p.)
"generowanie liczb pierwszych" Dziwnie to brzmi z matematycznego punktu widzenia ;D

Wiesz Hipoteza Riemanna, setki lat z próbą odkrycia sekretu i (wzoru?) liczb pierwszych... Takie tam : )
komentarz 11 stycznia 2019 przez Bosswell Nałogowiec (36,470 p.)
Mówimy tu o generowaniu liczb pierwszych z określonego przedziału [2 ... n]. Do tego można zastosować sito erosteresa. Wiadomo, ze nie mówimy o przypadkach, gdzie „n” jest równe bardzo dużej liczbie. W zadaniu musisz wykryć to tylko dla jednej liczby. Dlatego sito i sposób generowania zbioru, raczej sensu nie ma. No chyba ze wybierał będziesz kilka razy i masz zdefiniowany zakres zbioru. Jeżeli mowa tylko o jednej liczbie, to w pętli po koleii sprawdzaj jej dzielniki. Licz ilość ich wystąpień. Jak będzie ich więcej niż dwa, to przerwij pętle i to nie bedzie liczba pierwsza. Ilość kroków pętli możesz zmniejszyć o pierwiastek z danej liczby. Jeżeli liczba będzie pierwsza, to sprawdź drugi warunek
komentarz 11 stycznia 2019 przez Bosswell Nałogowiec (36,470 p.)
To są klasyczne metody. Z tego co kajaze, to jest binarna metoda na szukanie liczb pierwszych.

Podobne pytania

0 głosów
0 odpowiedzi 244 wizyt
pytanie zadane 1 listopada 2022 w Java przez Magic19921057 Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 493 wizyt
pytanie zadane 29 listopada 2020 w Java przez zuzannaruda Nowicjusz (240 p.)
0 głosów
1 odpowiedź 1,115 wizyt

92,566 zapytań

141,420 odpowiedzi

319,615 komentarzy

61,952 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!

...