ΠΠ°ΡΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
ΠΠ΅ΡΠ²ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ (ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ) ΠΊΠΎΡΠ½Π΅ΠΌ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ P, Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ»ΠΎ g < P ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ Ρ P, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ d. ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ d (Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠ³Π°ΡΠΈΡΠΌ ΡΠΈΡΠ»Π° g ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ P ΠΏΡΠΈ ΠΎΡΠ½ΠΎΠ²ΡΠ½ΠΈΠΈ i Ρ. Π΅ ΠΈΠ»ΠΈ) ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌ, Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ P ΠΈ = P-1 ΡΠΈΡΠ΅Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (ΠΈΠ½Π΄Π΅ΠΊΡ) ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π³Π΄Π΅: i = 2,3,4,…, P-2. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ°ΡΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
1. ΠΠΈΡΠ½ΡΠ΅ Π°Π»ΡΠ°Π²ΠΈΡΡ Π‘ΠΎΠ·Π΄Π°Π»Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°Π»ΡΠ°Π²ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π° Π² ΡΠΎΡΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Button 1−3
Π ΠΈΡΡΠ½ΠΎΠΊ 1
Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΈΠΆΠ΅Π½Π΅Ρ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
procedure TForm1. Button3Click (Sender: TObject);
const
A: array[0.15] of char = ('0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
var
i: integer;
begin
Form1.Caption := '';
for i := 0 to 15 do
Form1.Caption := Form1. Caption + A[i] + ' ';
end;
Π‘ΠΎΠ·Π΄Π°ΡΡ Π°Π»ΡΠ°Π²ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Succ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠΊΠ°Π·Π°Π»Π° Π΅Π΅ ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ».
procedure TForm1. Button1Click (Sender: TObject);
var
A: array[1.32] of char;
i: integer;
begin
{Π‘ΡΡΠΎΠ΅ΠΌ Π°Π»ΡΠ°Π²ΠΈΡ}
i := 1;
A[i] := 'Π';
Repeat
inc (i, 1);
A[i] := Succ (A[i-1]);
until i >= 32;
Form1.Caption := '';
for i := 1 to 32 do
Form1.Caption := Form1. Caption + A[i] + ' ';
end;
Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π°Π»ΡΠ°Π²ΠΈΡ, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Pred, ΡΠΊΠ°Π·Π°Π² ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΡΡΠΎ ΠΌΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ.
procedure TForm1. Button2Click (Sender: TObject);
var
A: array[1.32] of char;
i: integer;
begin
i := 1;
A[i] := 'Π―';
Repeat
inc (i, 1);
A[i] := Pred (A[i-1]);
until i >= 32;
Form1.Caption := '';
for i := 1 to 32 do // Π² ΡΠΈΠΊΠ»Π΅ ΠΎΡ 1 Π΄ΠΎ 32
Form1.Caption := Form1. Caption + A[i] + ' ';
end;
2. Π¨ΠΈΡΡ ΠΠΈΠΆΠ΅Π½Π΅ΡΠ° — ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΡΡ Π¦Π΅Π·Π°ΡΡ, ΡΠΈΡΡ XOR
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠ»Π° Π² ΡΠΎΡΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Edit1 (Π²Π²ΠΎΠ΄ ΠΏΠ°ΡΠΎΠ»Ρ), ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΠ΅ΠΌΠΎ1,2,3, ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Label 1,2,3 (Π½Π°Π΄ΠΏΠΈΡΠΈ), ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° GroupBox 1, 2, 3 Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ 2 ΠΊΠ½ΠΎΠΏΠΊΠΈ Button (Π²ΠΈΠ΄ ΡΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 2).
Π ΠΈΡ. 2. Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ΅ Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΠ°Π²ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ASCII (Z-256)
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠΠΠΠΠΠ Π (ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΡΡ Π¦Π΅Π·Π°ΡΡ) ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ
{Private declarations}
function VCR (PSW, TXT: string; CRT: boolean):string;
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
{Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΠ΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΠΈΠΆΠ΅Π½Π΅ΡΡ}
function TForm1. VCR (PSW, TXT: string; CRT: boolean): string;
var
i, NS: integer;
TMP:string;
begin
tmp:='';
NS:=1;
for i:=1 to length (TXT) do
begin
if CRT = true then
TMP := TMP + chr (ord (TXT[i])+ord (PSW[NS]))
else
TMP := TMP + chr ((ord (TXT[i])+256)-ord (PSW[NS]));
NS := NS + 1;
if NS > length (PSW) then NS:=1;
end;
Result:=TMP;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button1Click (Sender: TObject);
begin
Memo2.Text := VCR (Edit1.Text, Memo1. Text, true);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button2Click (Sender: TObject);
begin
Memo3.Text := VCR (Edit1.Text, Memo2. Text, false);
end;
ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π»Π° ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π»Π° ΡΠ΅ΠΊΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ) ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΎΡΡ.
ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
{ Private declarations }
function VCR (PSW, TXT: string; CRT: boolean):string;
function CZR (PSW, TXT: string; CRT: boolean):string;
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
function TForm1. CZR (PSW, TXT: string; CRT: boolean):string;
var
i, NS: integer;
TMP:string;
begin
tmp:='';
NS:=1;
for i:=1 to length (TXT) do
begin
if CRT = true then
TMP := TMP + Chr ((Ord (TXT[i]) + Ord (PSW[NS])) mod 256)
else
TMP := TMP + Chr ((Ord (TXT[i]) — Ord (PSW[NS])) mod 256);
NS := NS + 1;
if NS > length (PSW) then NS:=1;
end;
Result:=TMP;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button3Click (Sender: TObject);
begin
Memo2.Text := CZR (Edit1.Text, Memo1. Text, true);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button4Click (Sender: TObject);
begin
Memo3.Text := CZR (Edit1.Text, Memo2. Text, false);
end;
ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π»Π° ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π»Π° ΡΠ΅ΠΊΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ) ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΎΡΡ.
Π£Π±Π΅Π΄ΠΈΠ»Π°ΡΡ, ΡΡΠΎ ΡΠΈΡΡΡ ΠΠΈΠΆΠ΅Π½Π΅ΡΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΡΡ Π¦Π΅Π·Π°ΡΡ Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Ρ. Π΅. ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ XOR
ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
{Private declarations}
function VCR (PSW, TXT: string; CRT: boolean):string;
function CZR (PSW, TXT: string; CRT: boolean):string;
function TXT_XOR (PSW, TXT: string):string;
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
function TForm1. TXT_XOR (PSW, TXT: string):string;
var
i, NS: integer;
TMP:string;
begin
tmp:='';
NS:=1;
for i:=1 to length (TXT) do
begin
TMP := TMP + Chr (Ord (TXT[i]) xor Ord (PSW[NS]));
NS := NS + 1;
if NS > length (PSW) then NS:=1;
end;
Result:=TMP;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button5Click (Sender: TObject);
begin
Memo2.Text := TXT_XOR (Edit1.Text, Memo1. Text);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button6Click (Sender: TObject);
begin
Memo3.Text := TXT_XOR (Edit1.Text, Memo2. Text);
end;
ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ (Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π»Π° ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π»Π° ΡΠ΅ΠΊΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ) ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΎΡΡ.
3. ΠΠΎΠ΄Π΅Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ «ΠΠΠΠΠΠ»
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠΠΠΠΠ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΄Π²ΠΈΠ³ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΠ΅ΠΊΡΡΠ΅ (ΡΡΡΠΎΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ°). Π Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π° f (x, i) = (Kx * i)^2, Π³Π΄Π΅ i — ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΡΡΠΎΠΊΠ΅, Kx — ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ (Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ = 0, 1, 3, 5, 7,…, n).
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΡΡΠΏΠ°Π» Π°Π»Π³ΠΎΡΠΈΡΠΌ Π¦Π΅Π·Π°ΡΡ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π·Π°ΠΌΠ΅Π½Ρ.
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ASCII
(1)
ΠΠ΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅ ASCII
. (2)
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΡΠΈ Kx = 0 ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ci = Ti + 0 (mod 256) ΠΈ Ti = Ci — 0 (mod 256).
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ SpinEdit (ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ), ΡΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Memo 1,2,3 (ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ΅ΠΊΡΡ, ΡΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ) ΠΈ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button (1 — ΡΠΈΡΡΠΎΠ²Π°ΡΡ, 2 — Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°ΡΡ). (ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΡΡΠ½ΠΎΠΊ Π½ΠΈΠΆΠ΅) Π ΠΈΡ. 3. Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ΅ ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΡ ΠΎΠ΄Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΡΡΡΡ:
Tx — ΡΠ΅ΠΊΡΡ ΠΈΠ»ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Kx — ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ ΡΠ΄Π²ΠΈΠ³Π° ΠΈ Encrupt — ΡΠ»Π°Π³ Π²ΠΈΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (true — ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, false — Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡ Π»ΠΈΠ±ΠΎ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°.
ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π»Π° ΡΡΠ½ΠΊΡΠΈΠΈ
{ Private declarations }
function EnDeCrupt (Tx:String; Kx: Integer; Encrupt: boolean):String;
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
function TForm1. EnDeCrupt (Tx:String; Kx: Integer; Encrupt: boolean):String;
var
i: integer;
X: String;
begin
X:='';
for i :=1 to Length (Tx) do
if Encrupt = true then
X := X + Chr ((Ord (Tx[i]) + Round (SQR (i * Kx))) mod 256)
Else
X := X + Chr ((Ord (Tx[i]) — Round (SQR (i * Kx))) mod 256);
Result := X;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button1Click (Sender: TObject);
begin
Memo2.Text := EnDeCrupt (Memo1.Text, SpinEdit1. Value, true);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button2Click (Sender: TObject);
begin
Memo3.Text := EnDeCrupt (Memo2.Text, SpinEdit1. Value, false);
end;
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ.
4. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ (recursive procedure) Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΡΠ°ΠΌΠΈ ΡΠ΅Π±Ρ.
ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠΈΠΌ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ (greatest common divisor, GCD) Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ΅Π»ΠΎΠ΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»ΡΡΡΡ Π΄Π²Π° ΡΠΈΡΠ»Π° Π±Π΅Π· ΠΎΡΡΠ°ΡΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΈΡΠ΅Π» 12 ΠΈ 9 ΡΠ°Π²Π΅Π½ 3. ΠΠ²Π° ΡΠΈΡΠ»Π° Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΡΠΌΠΈ (relatively prime), Π΅ΡΠ»ΠΈ ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΎΠ±ΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ°Π²Π΅Π½ 1.
ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊ ΠΠΉΠ»Π΅Ρ, ΠΆΠΈΠ²ΡΠΈΠΉ Π² Π²ΠΎΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΠΎΠΌ Π²Π΅ΠΊΠ΅, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΊΡ:
ΠΡΠ»ΠΈ A Π½Π°ΡΠ΅Π»ΠΎ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° B, ΡΠΎ GCD (A, B) = A
ΠΠ½Π°ΡΠ΅ GCD (A, B) = GCD (B Mod A, A).
ΠΡΠΎΡ ΡΠ°ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
GCD (9, 12)= GCD (12 Mod 9, 9)
GCD (3, 9) = 3
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΡΠΈΡΠ»Π° ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²ΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ 1<= B Mod A < A, Π΅ΡΠ»ΠΈ A Π½Π΅ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° B Π½Π°ΡΠ΅Π»ΠΎ. ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², A ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° 1 Π½Π°ΡΠ΅Π»ΠΎ, Π½Π° ΡΡΠΎΠΌ ΡΠ°Π³Π΅ ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ B ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡΡ Π½Π° A Π½Π°ΡΠ΅Π»ΠΎ, ΠΈ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ.
ΠΡΠΊΡΡΡΠΈΠ΅ ΠΠΉΠ»Π΅ΡΠ° Π·Π°ΠΊΠΎΠ½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ.
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° SpinEdit ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Button (ΡΠΈΡ. 4).
Π ΠΈΡ. 4
ΠΠ΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
private
{ Private declarations }
Function GCD (A, B: integer): Integer;
Π’Π΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ
Function TForm1. GCD (A, B: integer): Integer;
begin
If B Mod A = 0 Then
Result := A
else
Result := GCD (B mod A, A);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ
procedure TForm1. Button1Click (Sender: TObject);
var
A, B, X: integer;
begin
A := 12; B := 9;
X := GCD (A, B);
if X = 1 then Form1. Caption := 'ΠΠ΅Ρ ΠΠΠ !' else Form1. Caption := 'ΠΠΠ = ' + IntToStr (X);
end;
5. ΠΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π° ΠΠ°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ p, Π±ΠΎΠ»ΡΡΠ΅Π΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π΄Π΅Π»ΠΈΡΡΡ Π½Π°ΡΠ΅Π»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° 1 ΠΈ Π½Π° ΡΠ΅Π±Ρ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ Π³Π»Π°ΡΠΈΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠ΅ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ n, Π±ΠΎΠ»ΡΡΠ΅Π΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π», ΠΏΡΠΈΡΠ΅ΠΌ ΡΡΠΎ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΄ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΏΡΠΎΡΡΡΡ ΡΠΎΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° n ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:, Π³Π΄Π΅: p1 < p2 <…< pk — ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π°, .
ΠΠ°Π΄Π°ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΡ Π½Π°ΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» ΠΈΠΌΠ΅ΡΡ Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ.
ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠΈΡΠ΅Π» ΠΡΡΡΡ n N. ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ n ΠΏΡΠΎΡΡΡΠΌ?
ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ±Π½ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΡΠ»ΠΈ n — ΡΠΎΡΡΠ°Π²Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΡΠΎ n = ab, Π³Π΄Π΅: 1< a b, ΠΏΡΠΈΡΠ΅ΠΌ .
ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ d = 2, 3,…, ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π΄Π΅Π»ΠΈΡΡΡ Π»ΠΈ n Π½Π° d? ΠΡΠ»ΠΈ, Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΈΡΠ»Π° n Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½, ΡΠΎ n — ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΈΡΠ»Π° n, Ρ. Π΅. ΠΌΡ Π΄Π°ΠΆΠ΅ ΡΠ°Π·Π»ΠΎΠΆΠΈΠΌ n Π½Π° Π΄Π²Π° ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π΄Π΅Π»ΠΈΡΡΡ Π»ΠΈ n Π½Π° 2 ΠΈ Π½Π° 3, ΠΈ Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π΄Π°Π»Π΅Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π° d Π²ΠΈΠ΄Π°: 1 + 6j ΠΈ 5+ 6j Π³Π΄Π΅, j =1, 2,…
Π Π΅ΡΠ΅ΡΠΎ ΠΡΠ°ΡΠΎΡΡΠ΅Π½Π° ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΡΠΈΡΠ΅Π» 2, 3,…, N, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π² Π½Π°ΡΠ°Π»Π΅ Π²ΡΡΠ΅ΡΠΊΠ½ΡΡΡ Π²ΡΠ΅ ΡΠΈΡΠ»Π°, Π΄Π΅Π»ΡΡΠΈΠ΅ΡΡ Π½Π° 2, ΠΊΡΠΎΠΌΠ΅ 2. ΠΠ°ΡΠ΅ΠΌ Π²Π·ΡΡΡ ΡΠΈΡΠ»ΠΎ 3 ΠΈ Π²ΡΡΠ΅ΡΠΊΠ½ΡΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΡΠ»Π°, Π΄Π΅Π»ΡΡΠΈΠ΅ΡΡ Π½Π° 3. ΠΠ°ΡΠ΅ΠΌ Π²Π·ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅, Π½Π΅ Π²ΡΡΠ΅ΡΠΊΠ½ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Ρ. Π΅. 5) ΠΈ Π²ΡΡΠ΅ΡΠΊΠ½ΡΡΡ Π²ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅Π»ΡΡΠΈΠ΅ΡΡ Π½Π° Π½Π΅Π³ΠΎ ΡΠΈΡΠ»Π°, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π ΠΈΡΠΎΠ³Π΅ ΠΎΡΡΠ°Π½ΡΡΡΡ Π»ΠΈΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π°.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ MΠ΅mo ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Button, Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ OnClick ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ (Π ΠΈΡ. 5).
Π ΠΈΡ. 5
Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ΅ΠΉ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 2 — 255.
procedure TForm1. Button1Click (Sender: TObject);
const N = 255;
type NP = set of 2. N;
var
simple: NP;
i, K, L: integer;
begin
Memo1.Clear;
Memo1.Lines.Add ('ΠΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π° ΠΌΠ΅Π½ΡΡΠΈΠ΅ N: ');
simple :=[2.N];
L := trunc (sqrt (N+1));
K := 1;
while K <= L do //ΠΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠΊΠ» Π΄ΠΎ K <= L
begin
repeat K := K+1 until K in simple;
Memo1.Lines.Add (intToStr (K));
for i := 2 to N div K do simple := simple — [K*i];
end;
for K := L+2 to N do
if K in simple then Memo1.Lines.Add (intToStr (K));
end;
Π’Π΅ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ°Π»ΠΎΠΉ ΡΠ΅ΠΎΡΠ΅ΠΌΡ Π€Π΅ΡΠΌΠ° ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠΈΡΠ΅Π» n ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ±Π½ΡΡ Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΠΆΠ΅ Π½Π΅ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΌΠ°Π»ΠΎΠΉ ΡΠ΅ΠΎΡΠ΅ΠΌΠ΅ Π€Π΅ΡΠΌΠ°: Π΅ΡΠ»ΠΈ n ΠΏΡΠΎΡΡΠΎΠ΅, ΡΠΎ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ a Z Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅:
Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ (a, n) = 1, ΡΠΎ:
ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡΡ n Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ a Z ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Π»ΠΎΠΉ ΡΠ΅ΠΎΡΠ΅ΠΌΡ Π€Π΅ΡΠΌΠ° Π·Π° log n Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ Π² ΠΊΠΎΠ»ΡΡΠ΅ Z/nZ). ΠΡΠ»ΠΈ ΠΌΠ°Π»Π°Ρ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π€Π΅ΡΠΌΠ° Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π°, ΡΠΎ n ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ, ΡΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄ ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ΅ n, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΅ΠΎΡΠ΅ΠΌΠ° Π΄Π°Π΅Ρ Π»ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. ΠΡΠΎΡ ΡΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠΈΡΠ΅Π».
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ 100-Π·Π½Π°ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» n Π²ΠΈΠ΄Π°:, Π³Π΄Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΠ°, ΠΈ ΠΏΠ΅ΡΠ²ΡΠ΅ Π΄Π΅ΡΡΡΡ ΡΠΈΡΠ΅Π», ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΡ ΡΡΠΎΡ ΡΠ΅ΡΡ, ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΈΡΠ»Π°, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΠ°ΡΠΌΠ°ΠΉΠΊΠ»Π°, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ΅ΡΡΠ° Π€Π΅ΡΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΈ ΡΠΈΡΠ»Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΡΠΌΠΈ. ΠΠ°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΠ°ΡΠΌΠ°ΠΉΠΊΠ»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎ 561, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» 561=3*11*17. ΠΠ»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠΈΡΠ΅Π» ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ΅ΠΎΡΠ΅ΠΌΠ°Ρ ΠΠ°Π³ΡΠ°Π½ΠΆΠ°, ΠΠ»Π»Π΅ΡΠ° ΠΈ ΡΡΠ΄Π° Π΄ΡΡΠ³ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΎΠ².
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΠΈΠΆΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠΈΠΏΠ° Integer.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ SpinEdit 1,2 (Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΡΠΈΡΠ΅Π»), ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Memo — Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Button.
Π ΠΈΡ. 6. Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΡΠΎΡΠΌΠ΅ Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΠΏΡΠΎΡΡΠΎΡΡ ΡΠΈΡΠ»Π° Π’Π°ΠΊ, ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π°Ρ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎ, ΡΠ΅Π»ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠ»Π° Π² Unit’e Π²ΡΡΠ΅ ΡΠ΅Π»Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΡΡΠ°.
function Simple (n:integer):Boolean;
var k: Boolean; i: integer;
begin
k:=true;
if n<>2 then
for i:=2 to trunc (sqrt (n))+1 do
if n mod i = 0 then
begin
k := false;
break;
end;
Result:=k;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ
procedure TForm1. Button1Click (Sender: TObject);
var
i:integer;
begin
Memo1.Clear;
for i := SpinEdit1. Value to SpinEdit2. Value do
if Simple (i) = true then Memo1.Lines.Add (IntToStr (i));
end;
6. ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π²Π΄ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡΠ»ΠΎΠΉ:
gi = a gi-1 + b (mod m),
Π³Π΄Π΅: gi — i-ΠΉ ΡΠ»Π΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π»; a, b, m ΠΈ g0 — ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ.
ΠΠ°Π½Π½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΠΎΡ 0 Π΄ΠΎ m-1, ΠΈ Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ gi ΠΈ gj ΡΠΎΠ²ΠΏΠ°Π΄ΡΡ, ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄ΡΡ: gi+1 = gj+1, gi+2 = gj+2, ΠΈ Ρ. Π΄.
ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ {gi} ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠΉ, ΠΈ Π΅Π΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ m. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅ (1), Π±ΡΠ» ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ (ΡΠ°Π²Π½ΡΠΌ m), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΎΡΠΌΡΠ»Ρ (1) Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ:
b ΠΈ m —Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΡΠ»Π°; a-1 Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΈΡΠ»Π° m; a-1 ΠΊΡΠ°ΡΠ½ΠΎ 4, Π΅ΡΠ»ΠΈ m ΠΊΡΠ°ΡΠ½ΠΎ 4.
ΠΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ SpinEdit — Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ (ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ) ΡΠΈΡΠ»Π° B Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ L (255), ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Memo — Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΠΊΠ½ΠΎΠΏΠΊΠ° Button (ΡΠΈΡ. 6).
Π ΠΈΡ. 7
ΠΡΠΎΡΠ΅Π΄ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ
procedure RND_CODE (X, M: integer; var RCOD: array of integer);
var
i, A: integer;
begin
A:= M + 1;
RCOD[0] := X mod 255;
for i := 1 to M — 1 do
RCOD[i] := (A*RCOD[i-1] + X) mod 255;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π²Π΄ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π»
procedure TForm1. Button1Click (Sender: TObject);
var
A: array[1.500] of integer;
i, X: integer;
begin
X := SpinEdit1. Value;
RND_CODE (X, High (A), A);
Memo1.Clear;
for i:= 1 to High (A) do
Memo1.Lines.Add ('β ' + IntToStr (i) + ' ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° = ' + IntToStr (A[i]));
end;
7. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΠ΅ΠΊΡΡΠ΅.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (ΡΠΈΡ. 7):
SpinEdit 1,2 — Π²Π²ΠΎΠ΄ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅ΠΉ;
Memo 1,2,3 — ΠΎΠΊΠ½Π° Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°;
Button 1,2 — ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ.
Π ΠΈΡ. 8. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠ΄ΡΠ»Ρ
var
Form1: TForm1;
StartKey, MultKey: integer;
implementation
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
function CCR (const TXT: string; StartKey, MultKey: Integer; CRT: Boolean): string;
var
i: Integer;
begin
Result:='';
for i:=1 to Length (TXT) do
begin
Result := Result + Chr (Ord (TXT[i]) xor (StartKey shr 8));
if CRT = true then
StartKey := (Ord (Result[i]) + StartKey) * MultKey
else
StartKey:=(Ord (TXT[i]) + StartKey) * MultKey;
end;
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button1Click (Sender: TObject);
begin
StartKey := SpinEdit1. Value;
MultKey := SpinEdit2. Value;
Memo3.Text := CCR (Memo2.Text, StartKey, MultKey, true);
end;
ΠΠΎΠΌΠ°Π½Π΄Π° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
procedure TForm1. Button2Click (Sender: TObject);
begin
StartKey := SpinEdit1. Value; // (567) ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
MultKey := SpinEdit2. Value; // (18 367) ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ
Memo2.Text:= CCR (Memo1.Text, StartKey, MultKey, false);
end;
8. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ (Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΠ»Ρ-ΠΠ°ΠΌΠ°Π»Ρ) ΠΠ±ΡΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ»Ρ-ΠΠ°ΠΌΠ°Π»Ρ Π»Π΅ΠΆΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π° Π² 1976 Π³ΠΎΠ΄Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ Π£. ΠΠΈΡΡΠΈ ΠΈ Π. Π. Π₯Π΅Π»Π»ΠΌΠ°Π½Π° «ΠΠΎΠ²ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ».
ΠΠ»ΡΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π³Π΄Π΅ P — Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, g — ΠΏΠ΅ΡΠ²ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ P. Π‘Π΅ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ a ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ ΡΠ΅Π»ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, Π»ΡΡΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ. ΠΠ΅Π»ΠΈΡΠΈΠ½Π° ΡΠΈΡΠ»Π° Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°.
ΠΠ΅ΡΠ²ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ (ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ) ΠΊΠΎΡΠ½Π΅ΠΌ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ P, Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ»ΠΎ g < P ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ Ρ P, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ d. ΠΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ d (Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠ³Π°ΡΠΈΡΠΌ ΡΠΈΡΠ»Π° g ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ P ΠΏΡΠΈ ΠΎΡΠ½ΠΎΠ²ΡΠ½ΠΈΠΈ i Ρ. Π΅ ΠΈΠ»ΠΈ) ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΌ, Π½Π°ΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅. ΠΡΡΡΠ΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ P ΠΈ = P-1 ΡΠΈΡΠ΅Π» ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (ΠΈΠ½Π΄Π΅ΠΊΡ) ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π³Π΄Π΅: i = 2,3,4,…, P-2. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠ°, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ i, (Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ P ΠΈ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ) ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π° 2 ΠΈ 3, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΡΠ΅Π½Ρ Π½Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ P=11, ΠΏΠ΅ΡΠ²ΡΠΌ ΠΊΠΎΡΠ½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ»ΠΎ 2, ΡΠ°ΠΊ ΠΊΠ°ΠΊ: =, Π³Π΄Π΅: ΠΈ d = 5 =. ΠΠ»Ρ ΠΌΠΎΠ΄ΡΠ»Ρ P = 7 ΠΏΠ΅ΡΠ²ΡΠΌ ΠΊΠΎΡΠ½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ»ΠΎ 33(mod 7) = 6, Π° Π²ΡΠΎΡΡΠΌ ΠΊΠΎΡΠ½Π΅ΠΌ Π±ΡΠ΄Π΅Ρ, 53(mod 7) = 6.
ΠΠ΅ΡΠ²ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠ΅ ΠΊΠΎΡΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½ΡΡ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠ»ΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΄ ΡΠΈΡΠ΅Π», ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΊΠΎΡΠΎΡΡΡ g0, g1, g2,…g Ρ (m) —1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ Π²ΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ Ρ m ΡΠΈΡΠ΅Π», ΠΌΠ΅Π½ΡΡΠΈΡ m. Π’ΠΎ Π΅ΡΡΡ gk ΠΏΡΠΎΠ±Π΅Π³Π°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΡΠ΅ΡΠΎΠ² ΠΏΡΠΈ k = 1, 2,… Ρ (m), Π³Π΄Π΅: Ρ (m) — ΡΡΠ½ΠΊΡΠΈΡ ΠΠΉΠ»Π΅ΡΠ°.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ SpinEdit 1,2,3- Π΄Π»Ρ Π²Π²ΠΎΠ΄Π° ΡΠΈΡΠ΅Π», Memo 1,2 — Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button 1,2. (ΡΠΈΡ. 9)
Π ΠΈΡ. 9
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π² ΡΠ°Π·Π΄Π΅Π» Uses Unit’aΠ²ΠΊΠ»ΡΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Math.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
function Simple (n:integer):Boolean;
var k: Boolean; i: integer;
begin
k:=true;
if n<>2 then
for i:=2 to trunc (sqrt (n))+1 do
if n mod i = 0 then
begin
k := false;
break;
end;
Result:=k;
end;
function IntModPower (A, B, P:integer):integer;
var
x:array of integer;
i:integer;
begin
SetLength (x, P);
x[1]: =A mod P;
for i:=2 to B do
x[i]: =x[i-1] * A mod P;
Result:=x[B];
end;
procedure TForm1. Button1Click (Sender: TObject);
var
i:integer;
begin
Memo1.Clear;
for i := SpinEdit1. Value to SpinEdit2. Value do
if Simple (i) = true then Memo1.Lines.Add (IntToStr (i));
end;
procedure TForm1. Button3Click (Sender: TObject);
var
i, d, P: integer;
begin
Memo2.Clear;
P := SpinEdit3. Value;
d := (P-1) div 2;
for i := 2 to P-2 do
if (IntModPower (i, d, P) = P-1) then
Memo2.Lines.Add ('g = ' + IntToStr (i) + ' (^' + IntToStr (d) + ') = ' + FloatToStr (Power (i, d)));
end;
9. ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π₯ΠΠ¨ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π₯ΠΠ¨ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ²Π΅ΡΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ:, Π³Π΄Π΅: — Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, — ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ (ΡΠ°Π±Π»ΠΈΡΠ° ASCII).
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΡΠΈΡ. 1) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π° Edit1 ΠΈ Edit2, ΠΊΠ½ΠΎΠΏΠΊΡ Button1 ΠΈ Π΄Π²Π΅ ΠΌΠ΅ΡΠΊΠΈ Label1 ΠΈ Label2. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΡΠ΅Π»ΡΠΊΠ° ΠΊΠ½ΠΎΠΏΠΊΠΈ onClick.
Π ΠΈΡ. 10 ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
10. ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ «ΠΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ°»
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ:
ΡΠ°Π²Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ M, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π°Π»ΡΠ°Π²ΠΈΡΡ Π΄Π»ΠΈΠ½ΠΎΠΉ L. ΠΠ΄Π΅: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π°, Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Ρ M;; , i = 1, 2,…, N < M.
ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄: ΠΈΠ»ΠΈ
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΡΠΈΡ. 2), ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ:
Π‘Π΅ΡΠΊΡ StringGrid1, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π°Π»ΡΠ°Π²ΠΈΡΠ°, ΠΏΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° Edit1 — Edit5, ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° — SpinEdit1, ΡΡΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Button1 — Button3 ΠΈ ΠΌΠ΅ΡΠΊΠΈ Label1 — label5 ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ.
Π ΠΈΡ 11. ΠΠΈΠ·Π°ΠΉΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΈΡΠ½ΡΠΉ Π°Π»ΡΠ°Π²ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ A.
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΡΡΠΈ Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΡΠΎΡΠ΅Π΄ΡΡΠ° RND_CODE Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΠ‘Π§. Π€ΡΠ½ΠΊΡΠΈΡ ALNo Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² Π°Π»ΡΠ°Π²ΠΈΡΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ NoAL Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½ΠΎΠΌΠ΅ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² Π°Π»ΡΠ°Π²ΠΈΡΠ΅.
ΠΡΠ²ΠΎΠ΄ Π°Π»ΡΠ°Π²ΠΈΡΠ° Π² ΡΠ΅ΡΠΊΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΌΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ onCreate.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ onClick ΠΊΠ½ΠΎΠΏΠΊΠΈ Button1.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ onClick ΠΊΠ½ΠΎΠΏΠΊΠΈ Button2.
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΠΈΡΡΠΊΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΡ onClick ΠΊΠ½ΠΎΠΏΠΊΠΈ Button3.