Liczby pierwsze

0

Czy zna kto jakis inny algorytm niz z wykorzystaniem sita Erastosenesa na wyszukiwanie liczb pierwszych.Prosilbym o jakis kod:)

0

Zalezy o jak szybki algorytm Ci chodzi i czy bardziej zalezy Ci na paieci czy na szybkosci.
Kiedys robilem takie programik. Dziala tak, ze ma tablice liczb pierwszych. Od razu na starcie wprowadza mu sie liczbe 2. Nastepnie jedzie w petli po kolei ze wszystkimi liczbami i sprawdza czy jest pierwsza (czyli czy nie jest podzielna przez ktorakolwiek z poprzednio znalezionych liczb pierwszych).

A co do kodu to mam nadzieje, ze o nieczym nie zapomnialem:
[code]
Function SprCzyLiczJestPier(Liczba: Real): Boolean;
var Pierwsza, Koniec: Boolean; a1, a2, a3: Real;
begin
Pierwsza:= False;

Koniec:= False;

a1:= 1;

a3:= Sqrt(Liczba);

While Koniec <> True do
begin
a1:= a1 + 2;

a2:= Liczba / a1;
If Trunc(a2) = a2 then
 begin
   Pierwsza:= True;
   Koniec:= True;
 end;

If a3 < a1 then Koniec:= True;

end;
If Pierwsza = False then SprCzyLiczJestPier:= True else
SprCzyLiczJestPier:= False;
end;

procedure TForm2.Button1Click(Sender: TObject);
var aa, bb: Real; cc: Boolean; Licznik: Integer;
begin
aa:= StrToFloat(Edit1.Text);
bb:= StrToFloat(Edit2.Text);
Licznik:= 0;

If aa div 2 = 0 then aa:= aa + 1;
If bb div 2 = 0 then bb:= bb + 1;

While (aa - 4) <> bb do
begin
cc:= SprCzyLiczJestPier(aa);
If cc = True then Licznik:= Licznik + 1;

aa:= aa + 2;
end;
Edit3.Text:= IntToStr(Licznik);
end;
[/code]
Aha, to moze byc troche lamersko napisane, bo pislem to 2 lata temu (to byl moj drugi progs w zyciu :) )

0
  • CD -, to co opisałeś jest właśnie sitem Erastotenesa
0

http://4programmers.net/Forum/viewtopic.html?id=29412
Wyszukiwarka się kłania.

No tak ale tam jest tylko o algorytmie z wykorzystaniem sita.

0

No tak ale tam jest tylko o algorytmie z wykorzystaniem sita.

Kapustka wcale nie pisze o sicie.
Podał dwa przykłady. Jeden klasyczny a drugi probabilistyczny.
Wiem, że on dużo pisze, ale zapewniam, że warto czytać jego posty. Niosą dużą dawkę wiedzy.

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