Skocz do zawartości


Almond

Rejestracja: 13 lut 2008
OFFLINE Ostatnio: 19 02 2008 19:06
-----

Moje tematy

[pascal]Liczby pierwsze

18 02 2008 - 00:32

Mam taką prośbę czy mógłby mi ktoś wyjaśnić te programy??

function CzyMersennea(liczba: Integer): Boolean;
var
l: Integer;
begin
l := liczba+1;
while l <> 1 do
begin
if l mod 2 <> 0 then
Break;
l := l div 2;
end;
Result := l = 1;
end;


procedure GenerujPierwszeMersennea(ile: Integer);
var
p, k, l: Integer;
begin
p := 2;
k := 0;
while k < ile do
begin
if p > 31 then
begin
Writeln('UWAGA: zakonczono generowanie ze wzgledu na moc typu Integer');
Break;
end;

l := Potega(2, p) - 1;
if CzyPierwsza(l) then
begin
Inc(k);
Writeln(k, ': ', l);
end;
Inc(p);
end;
end;

Wysłane po 31 sekundach:

function CzyPseudopierwsza(liczba: Integer): Boolean;
var
l: Integer;
begin
if liczba < 32 then
l := Potega(2, liczba)-2;
Result := l mod liczba = 0;
end;

procedure GenerujPseudopierwsze(ile: Integer);
var
p, l, k: Integer;
begin
k := 0;
p := 1;
while k < ile do
begin
if p > 31 then
begin
Writeln('UWAGA: zakonczono generowanie ze wzgledu na moc typu Integer');
Break;
end;
l := Potega(2, p)-2;
if (l mod p) = 0 then
begin
Inc(k);
Writeln(k, ': ', p);
end;
Inc(p);
end;
end;