Zdrojový kód na výpis prvočíselných dvojíc

Autor: Miroslav Židek | 3.11.2013 o 7:09 | (upravené 3.11.2013 o 7:50) Karma článku: 3,24 | Prečítané:  639x

V tomto príspevku si vo všeobecnosti popíšeme niečo o prvočíselných dvojiciach a o možnostiach práce s  mojou metódou získavania prvočíselných hodnôt, ktorú som po častiach neustále popisoval.

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.

 

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

EKONOMIKA

U. S. Steel odchádza, o košickú fabriku bojujú Třinecké železárny

U. S. Steel predáva košické železiarne, ponuku predložili Číňania a skupina slovenských miliardárov.

KOMENTÁRE

Ako o tridsať rokov rozvrátim našu spoločnosť

Moderné demokracie sa premenia na vlády starých.

SVET

Dôsledky talianskeho referenda pocíti celá Únia

Neúspešné talianske referendum vystrašilo trhy.


Už ste čítali?