Keď sa zamyslíte nad tým, cez aký vzorec vieme prvočísla vypočítavať, tak sú to násobky čísla 6. Z toho vyplýva, že vynásobením čísla 6 s ľubovoľným prirodzeným číslom, by nám mali teoreticky vzniknúť všetky stredy tzv. prvočíselných dvojíc.
Táto myšlienka tvorí aj základ prvého kroku vo výpočte hodnôt zapisovaných do tabuľky.
Prečo nie je možné, z každého stredu možnej prvočíselnej dvojice získať prvočíselné hodnoty, sme si hovorili v príspevku o existencii ďaľších prvočíselných dvojíc cez prvočísla 5 a 7.
Matematik Leonard Euler o prvočíslach povedal aj to, že sa matematici doposiaľ neúspešne snažili objaviť nejaké platiace zákonitosti v rade prvočísel, ale je možné sa domnievať, že je to záhada, do ktorej naša myseľ nikdy neprenikne.
Prečo o tom píšem ?
Chcem iba podotknúť, že tak, ako som popisoval metódu výpočtu všetkých prvočísel viackrát, tak aj v predchádzajúcom článku, máme my, ktorí túto metódu poznáme, veľkú výhodu voči ostatným. Chápeme totiž, že tým, že poznáme pochody pri tvorbe tabuľky na hľadanie prvočísel, poznáme viaceré súvislosti a dokážeme si svojim premýšľaním vyhodnotiť možnosti čiastkových výsledkov.
Čo tým myslím ?
Vieme si vypočítať hodnoty, podľa ktorých vypočítame a nájdeme všetky prvočísla v ľubovoľnom intervale. Dokážeme zablokovať v programe na výpis prvočísel nepotrebný algoritmus a dostaneme iba hodnoty spomínaných prvočíselných dvojíc atď.
Je tomu tak preto, lebo poznáme súvislosti a zákonitosti hľadania prvočísel, pre ktorých pochopenie je najlepším príkladom vytváraná, stále spomínaná tabuľka.
Pri Eratostenovom site nie je možné pochopiť, ako sú prvočísla rozložené v rade prirodzených čísel. Tým, že sa vyčiarkujú iba násobky čísel, nedokážu sa z programu oddeliť napríklad iba prvočíselné dvojice.
Ukážka programu na výpis prvočíselných dvojíc :
Program je úplne ten istý, ako pri výpise všetkých prvočísel. Zablokované sú len nepotrebné algoritmy.
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;
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 s následným zápisom do tabuľky.