Witam
Mam takie zadanko:
Napisać klasę służącą do generowania liczb pierwszych z zadanego zakresu (1...n). Liczby należy generować za pomocą sita Erastotenesa
http://www.math.edu.pl/sito-eratostenesa
Klasa ta powinna posiadać następujące metody:
konstruktor określający górną granicę (n); konstruktor alokuje i inicjuje tablicę odpowiednich rozmiarów
metodę odsiej() usuwającą z przygotowanej w konstruktorze tablicy liczby złożone
metodę wyswietl() wyświetlającą wszystkie liczby pierwsze z zakresu 1...n
metodę sprawdz(x) - sprawdzającą, czy liczba x jest liczbą pierwszą; uwaga - jeśli wcześniej wywołano metodę odsiej(), to sprawdzenie powinno mieć złożoność O(1) dla x z zakresu 1...n
Do tego udało mi się dopasować kod który robi to co potrzebuje (poza sprawdz) ale potrzebuję rozbić ten kod na wyżej wymienione metody. Dzis pierwszy raz się za javę zabrałem myśląc że szybko to zrobię ale w c++ to jednak trochę inaczej się to robi i jakoś nie bardzo moge sobie z tym poradzić a muszę to napisać w ciągu godziny, póltorej. Pomoże ktoś:)
import java.util.Scanner;
public class Liczbyp
{
public static void main(String[] args)
{
int n;
System.out.println("Podaj n");
Scanner odczyt = new Scanner(System.in);
n = odczyt.nextInt();
boolean[] numbersTable = new boolean[n+1];
for(int i = 2; i*i <= n; i++)
{
if (numbersTable[i] == true)
continue;
for (int j = 2 * i ; j <= n; j += i)
numbersTable[j] = true;
}
System.out.println("Liczby pierwsze z przedziału od 2 do " + n + ":");
for (int i = 2; i <= n; i++)
if (numbersTable[i] == false)
System.out.println(i);
}
}