Odpowiedzi

Najlepsza Odpowiedź!
2010-02-28T11:10:16+01:00
A)
najlepiej użyć do tego problemu algorytmu zwanego sitem Eratostenesa (http://pl.wikipedia.org/wiki/Sito_Eratostenesa - szczegółowy ilustrowany opis):
1. tworzymy tablicę n wartości logicznych (i wszędzie wstawiamy wartość true
2. dla kolejno dla indeksów (< 1) o wartości true: dla indeksów będących ich wielokrotnościami do tablicy wpisujemy false
3. te indeksy (< 1) dla których w tablicy jest wartość true na końcu są liczbami pierwszymi

b)
K01: dopóki i <= n powtarzaj tab [i] := true
K02: dopóki i <= n powtarzaj
K02.1: jeżeli tab [i] = true to dopóki j <= n powtarzaj tab [i*j] := false
K03: dopóki i <= n powtarzaj wypisz (tab [i])
K04: KONIEC

c) załącznik

d)
program sito_erastotenesa;
const zakres = 100;
var i, j: integer;
-----tablica: array[1..zakres] of boolean;

begin
-------writeln ('Ten program wypisuje liczby pierwsze w przezdziale od 1 do ', zakres);

-------for i := 1 to zakres do
--------------tablica[i] := true;

-------for i := 2 to zakres do
-------if tablica[i] then
--------------for j := 2 to (zakres div i) do
---------------------tablica[i*j] := false;

-------for i:= 1 to zakres do
--------------if tablica[i] then writeln (i:4);

-------readln;
end.

UWAGI!
Znaki '-' nie należą do kodu, przed wklejeniem do kompilatora trzeba je usunąć (poprawiają przejrzystość kodu, tu się nie da dać tabulatora). Instrukcja i 'readln' na końcu kodu w zasadzie nie jest potrzebna, ale dzięki niej program od razu po wczytaniu danych nie zamknie się tylko poczeka na naciśnięcie ENTER i będzie można zobaczyć wynik.

w razie pytań pisz na pw
1 5 1