Zdrojový kód na program prvočísel

Autor: Miroslav Židek | 3.11.2013 o 5:05 | (upravené 3.11.2013 o 5:58) Karma článku: 4,24 | Prečítané:  920x

Na rady viacerých ľudí som sa napokon rozhodol, že zverejním zdrojový kód programu na výpočet všetkých prvočísel. Jeho algoritmy sú spracované do štyroch základných podmienok, podľa ktorých je možné dôjsť k požadovaným výsledkom.

Mnou popisovanú metódu výpočtu hodnôt - podkladov pre výpočet prvočísiel som celú postupne popisoval po častiach na tomto blogu. Na celý postup jednotlivých krokov výpočtu prvočíslených hodnôt som prišiel pri mojom hľadaní súvislostí medzi prvočíslami a druhými mocninami - ich rozkladom. Tento spôsob hľadania všetkých prvočísel poznám už cca 25 rokov, ale až v tomto roku som sa rozhodol zverejniť ho.

Program sa od iných líši tým, že vďaka celkovému rozboru metódy a zápisu vypočítavaných hodnôt do tabuľky, dokážeme lepšie pochopiť súvislosti, akým spôsobom sa cez prvé hodnoty prvočísel vieme dostať k výsledkom prvočíselných hodnôt ďaľších.

Matematik Dan Zagier konštatoval, že prvočísla napriek svojej jednoduchej definícii vyrastajú medzi ostatnými číslami ako burina a nikto nedokáže predpovedať, kde vyrastie ďaľšie. Čo je však ešte úžasnejšie - prvočísla vykazujú zarážajúcu pravidelnosť a ich chovanie má svoje zákony. Prvočísla vraj tieto zákonitosti poslúchajú s takmer vojenskou presnosťou.

V slovách matematika Zagiera sa spájajú dve naoko rozporuplné vety, ktoré však vystihol podľa mnohých ľudí veľmi presvedčivo. Ma však iba polovičnú pravdu.

Ak si osvojíme postup výpočtu hodnôt - podkladov pre výpočet prvočísel a začneme vytvárať postupne podľa popisu potrebných krokov tabuľku hodnôt, zrazu sa pozastavíme nad tým, že vytvárame cez prvočísla na začiatku každého riadku predpoklady na to, aby sme pri dotváraní podmienok, kde bude stáť ďaľšie prvočíslo pochopili, že prvočísla nevyrastajú medzi ostatnými číslami ako burina, a vieme postupne povedať, kde vyrastie ďaľšie prvočíslo.

Tým, že chápeme postupnosť krokov výpočtu v tejto metóde, chápeme aj to, čo povedal spomínaný matematik, a to je to, že prvočísla vykazujú zarážajúcu pravidelnosť. My už dnes vieme, že majú svoje zákonitosti, pri ktorých dodržaní vznikajú.

Ak niečo pracuje podľa určitých krokov,je teda niečo aj na tom, že prvočísla pracujú s takmer vojenskou presnosťou.

 

Moja otázka znie :   "Podobnosť čisto náhodná ?"

 

 

Program s popisom : je rozdelený na dve časti  (  ////////  )

 

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,k,m,r:integer;
borovec:string;
l : array[1..20000] of Integer;
n : array[1..20000] of Integer;
Fout: TextFile;
begin
AssignFile(Fout, 'D:\Prvocisla\Mapa.txt');
Rewrite(Fout);

for i:=1 to 20000 do
begin
l[i]:=0;
n[i]:=0;
end;

m := 10000;
r:=1;
i := 1;
borovec := '';


while (r<m) do
begin

r := 6 * i - 1;                       // Výpočet možného modrého prvočísla.
if (l[i]=0) and (n[i]=0) then         // V stĺpci žiadna hodnota - prvočíslo dvojice.
borovec := borovec+IntToStr(R)+'  '; 
if (l[i]>0) and (n[i]=0) then         // V stĺpci je modrá - prvočíslo.
borovec := borovec+IntToStr(R)+'  ';

if (l[i]=n[i]) and (n[i]>0) then;     // Ak sa rovná modré červenému a sú kladné, nevypíše nič (zložené číslo)

j:=1;
k:=1;
while (J<m) do
begin
j := k * r - i;                       // Zapisovanie modrých hodnôt do tabuľky
l[j] := j;
j := k * r + i;                       // Zapisovanie červených hodnôt do tabuľky

n[j] := j;
k := k+1;
end;

//////////////////////////////////////////////////////////////////////////////////////////////////////
r := 6 * i + 1;                       // Výpočet možného červeného prvočísla.
if (l[i]=0) and (n[i]=0) then        // V stĺpci žiadna hodnota - prvočíslo dvojice.
borovec := borovec+IntToStr(R)+'  ';

if (l[i]=0) and (n[i]>0) then         // V stĺpci je červená - prvočíslo.
borovec := borovec+IntToStr(R)+'  ';
if (l[i]=n[i]) and (n[i]>0) then;     // Ak sa rovná modré červenému a sú kladné, nevypíše nič (zložené číslo)

j:=1;
k:=1;
while (J<m) do
begin
j := k * r - i;       // Zapisovanie modrých hodnôt do tabuľky
n[j] := j;

j := k * r + i;       // Zapisovanie červených hodnôt do tabuľky
l[j] := j;
k := k+1;
end;

i := i+1;             // Zvýšenie čísla riadku - nasledujúce prvočíslo


end;
ShowMessage(borovec);
Write(Fout,borovec);
CloseFile(Fout);

end;

 

Aj keď je program krátky a jednoduchý, vzťahuje sa naň autorské právo tak, ako aj na celú popísanú metódu získavania prvočísel z hodnôt - podkladov pre výpočet prvočísel a následným zápisom do tabuľky.

 

 

 

Páčil sa Vám tento článok? Pridajte si blogera medzi obľúbených a my Vám pošleme email keď napíše ďalší článok
Pridaj k obľúbeným

Hlavné správy

DOMOV

Kaliňák nechal schátrať ubytovňu pre policajtov. Teraz sa jej chce zbaviť

Za projekt opravy, ktorý sa nikdy nevyužil, ministerstvo zaplatilo takmer 175-tisíc eur.

KOMENTÁRE

Kaliňák je Ficov Lexa

Minister vnútra vyrástol na symbol zrastenia politickej a ekonomickej moci.

KULTÚRA

Podivné príbehy a Instagram 19. storočia. Aký bol seriál 1890?

Historická detektívka sa pokúsila priniesť na obrazovky niečo iné.


Už ste čítali?