Hej Wszystkim. Pierwszy post także jak coś źle to dajcie znać będę poprawiał :D Mam problem z tą metodą mianowicie nie rozumiem tej złożoności obliczeniowej i przez to nie wiem wgl jak się zabrać za tą metodę. Mógłby ktoś nakierować jakoś jak to zrobić, wytłumaczyć. Z góy wielkie dzięki. Program ma za zadanie wyliczać Liczby pierwsze zgodnie z algorytmem Sito Erastotenesa ma składać się z 3 metod odsiej() wyświetl() i sprawdź(). dwie wcześniejsze napisałem z tą mam problem.
public boolean sprawdz (int k)
{
// sprawdza czy k jest liczbą pierwsza
// działa dla DOWOLNEGO k, również większego niż zadeklarowany wcześniej rozmiar sita "n"
// działa niezależnie od tego, czy funkcja odsiej została wcześniej wywołana czy nie
// ALE...
// jeśli k<N i funkcja odsiej została wywołana, to funkcja sprawdź ma mieć złożoność obliczeniową O(1)
// w pozostałych przypadkach akceptowalny jest O(n)
}
Wklejam metody, które napisałem i które działają.
public void odsiej() {
for (int i = 0; i < tab.length; i++) {
tab[i] = i;
}
for (int i = 2; i < tab.length; i++) {
for (int j = i; j < tab.length; j = j + i)
if (tab[j] == i) {
tab[j] = i;
} else if (tab[j] != i) {
tab[j] = 0;
}
}
}
public void wyswietl() {
for (int i = 2; i < tab.length; i++) {
if (tab[i] != 0) {
System.out.println(tab[i]);
}
}
}
public boolean sprawdz(int k)
{
}