Sito Eratostenesa

0

public class Sito {

    
public static void main(String[] args) {
       


        
        
        int n = 3000;
        boolean[] Tablica = new boolean[n+1]; 
        //tablica o indeksach od 0 do 100| wszystkie false czyli 0
        
        
        for(int i= 2; i*i <= n; i++){ // przeszukaj liczby od 2 do sqrt(n), 0 i 1 nie są liczbami pierwszymi
            if (Tablica[i] == true) //jeżeli dana liczba jest już wykreślona
                continue; //to przejdź do kolejnej
        
   
        for(int j= 2*i; j<=n; j+=i) //przejdź od liczby 2*i do n przesuwając się o i
            Tablica[j] = true; //i każdą z nich usuwaj ze zbioru
        }
        
        System.out.println("Liczby pierwsze z przedziału od 2 do " + n + ":");
        
        
        
        for (int i= 2; i<= n; i++) //przeszukaj liczby od 2 do n
            if(Tablica[i] == false) //jeśli liczba nie została usunięta ze zbioru
                System.out.println(i); //to ją wypisz
    
long start = System.currentTimeMillis();
for(int i=0; i<1000; i++)

long stop = System.currentTimeMillis();
       
System.out.println(stop - start);
        
    }


}

Jak zmierzyć czas wykonywania algorytmu znajdowania liczb pierwszych?

1

Na początku tworzysz sobie zmienną start:

long start = System.nanoTime();    

Potem wykonujesz funkcję, gdzie znajdujesz liczby i najlepiej przed wypisaniem ich (bo przecież czas wypisania nie zalicza się do znajdowania tych liczb) liczysz różnicę:

long elapsedTime = System.nanoTime() - start;

Na końcu możesz wypisać obliczony

elapsedTime

.

0

Dałbyś radę wkleić cały kod?

0

Rozpoczęcie nauki Javy od skopiowania algorytmu z wikipedii i losowe wrzucenie jakiegoś obliczania czasu w złym miejscu nie jest najlepszym pomysłem. W Internecie nawet po polsku znajdziesz jakieś kursy do nauki. Poza tym, powtórzę kolejny raz, zrób to co Ci napisałem wcześniej i dodatkowo czytaj komunikaty które dostajesz przy kompilacji.

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