Sito Eratostenesa w javie

Algorytm rozwiązywania równania liniowego

 

Liczby pierwsze

import java.util.Scanner;
public class Sito {
  public static void main(String[] args) {
    int n,i,j;
    Scanner klaw=new Scanner(System.in);
    System.out.print("n = ");
    n=klaw.nextInt();
    if(n<2) System.out.println("Brak liczb pierwszych w podanym zakresie");
    else{
      boolean skr[] = new boolean[n+1];
      for(i=2;i<=n;i++) skr[i]=false;
      i=1;
      do{
        i++;
        if(!skr[i]){
          j=i*i;
          while(j<=n){
            skr[j]=true;
            j+=i;
          }
        }
      } while(i*i<=n);
      for(i=2;i<=n;i++) if(!skr[i]) System.out.printf("%10d",i);
    }
  }
}

 

 

Linia Kodu

Punkt Algorytmu (Schemat)

Opis

1

-

Importowanie klasy Scanner do obsługi wejścia.

2

1 (START)

Deklaracja klasy Sito.

3

-

Deklaracja metody głównej main.

4

-

Deklaracja zmiennych całkowitych n, i, j.

5

-

Inicjalizacja obiektu Scanner.

6

-

Wypisanie monitu "n = " dla użytkownika.

7

2 (Czytaj n)

Wczytanie liczby n od użytkownika (n=klaw.nextInt();).

8

3 (n < 2), 4 (Pisz "Brak...")

Sprawdzenie warunku n < 2 i wypisanie komunikatu o błędzie, jeśli jest spełniony.

9

-

Otwarcie bloku else (gdy n > 2).

10

-

Deklaracja i inicjalizacja tablicy logicznej skr o rozmiarze n+1.

11

5 (i := 2), 6 (skr[i] := false, i := i+1), 7 (i > n)

Inicjalizacja tablicy skr wartościami false dla i > 2.

12

8 (i := 2) - Wartość początkowa jest ustawiana tutaj.

Inicjalizacja zmiennej kontrolnej i na 1 przed pętlą główną sita.

13

-

Otwarcie pętli do.

14

13 (i := i+1), 18 (i := i+1)

Inkrementacja i o 1.

15

9 (skr[i] = false)

Sprawdzenie, czy liczba i nie jest skreślona (if(!skr[i])).

16

10 (j := i * i)

Inicjalizacja j kwadratem liczby i.

17

11 (j < n)

Warunek kontynuacji pętli wewnętrznej while.

18

12 (skr[j] = true)

Skreślenie wielokrotności j.

19

12 (j := j+i)

Przejście do następnej wielokrotności i.

20

-

Zamknięcie pętli while.

21

-

Zamknięcie bloku if(!skr[i]).

22

14 (i^2 < n)

Warunek kontynuacji pętli głównej do-while.

23

15 (i := 2), 16 (skr[i] = false), 17 (Pisz: i), 18 (i := i+1), 19 (i > n)

Pętla for wyświetlająca liczby pierwsze (nie-skreślone).

24

-

Zamknięcie bloku else.

25

-

Zamknięcie metody main.

26

20 (STOP)

Koniec programu (zamknięcie klasy Sito).