Zdrojový kód na program prvočísel

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.

Písmo: A- | A+
Diskusia  (0)

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.

SkryťVypnúť reklamu
SkryťVypnúť reklamu
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou
SkryťVypnúť reklamu
Článok pokračuje pod video reklamou

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.

SkryťVypnúť reklamu

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;

SkryťVypnúť reklamu

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.

Miroslav Židek

Miroslav Židek

Bloger 
  • Počet článkov:  187
  •  | 
  • Páči sa:  5x

...bývam na Slovensku a mám záujem o všetko, čo nadchne ducha človeka Zoznam autorových rubrík:  SúkromnéNezaradené

Prémioví blogeri

Karol Galek

Karol Galek

116 článkov
Juraj Hipš

Juraj Hipš

12 článkov
Iveta Rall

Iveta Rall

91 článkov
Roman Kebísek

Roman Kebísek

105 článkov
Zmudri.sk

Zmudri.sk

3 články
reklama
reklama
SkryťZatvoriť reklamu