Program generujący liczby pierwsze z zadanego przedziału - od czego zacząć?

0

Cześć na zajęciach dostałem zadanie napisać program , lecz niestety nie mam pojecia jak sie za to zabrać a głównie od czego zacząć , jestem niestety słabym programistą więc jakby ktoś mógł dać mi jakieś wskazówki , jak skonstruować szkielet takiego programu ,jakby ktoś miał ochotę mi pomóc ,dac jakies rady było by super .z góry dzięki za odpowiedz

Sito Eratostenesa

Proszę 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ę ; konstruktor alokuje i inicjuje tablicę odpowiednich rozmiarów
    destruktor zwalniający zaalokowaną tablicę - czy jest potrzebny?
    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

Po stworzeniu obiektu Sito wszystkie publiczne metody udostępniane przez tą klasę powinny "działać"
Przykład:

// "naturalny" porządek algorytmu: stworz -> odsiej -> sprawdz

Sito s1 = new Sito(20);
s1->Sprawdz(7); // co teraz? przecież nie zostało jeszcze odsiane

0

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

s1->Sprawdz(7); // co teraz? przecież nie zostało jeszcze odsiane

Co teraz? Teraz nie będzie złożoności O(1) dla x z zakresu 1..n

0

include <iostream>
#include <math.h>
#include <stdlib.h>

using namespace std;
//----------------- www.math.edu.pl ------------------

int main(void)
{
unsigned long i, n, count = 0;

cout << "Sito Eratostenesa" << endl;
cout << "Podaj górną granicę: ";
cin >> n;
cout << endl;

int *a = new int[n];

if (a == 0)
{
cout << "Za mało pamięci" << endl;
return 0;
}

for (i = 2; i < n; i++) a[i] = true;

for (i = 2; i < n; i++)
 if (a[i])
  for (int j = i; j*i < n; j++) a[i*j] = false;

for (i = 2; i < n; i++)
 if (a[i])
 {
  count++;
  cout << i << " ";
 }

cout << endl << "Liczba liczb pierwszych: " << count << endl;

system("PAUSE");
return 0;
}
-na razie dostałem wskazówki żeby :
zamiast tego main, robisz klase i do tej klasy funkcje
metody to funkcje czyli wychodzi, ze musisz tam 3 funkcje zrobic
poczytaj sobie ofunkcjach , klasach, konstruktorze,destruktorze

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