рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрд░рдмреЛрдВ рд╕рд░рд▓ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рднреЗрдЬрдирд╛

( рдЪрд┐рддреНрд░ рд╕реНрд░реЛрдд )

рдпрд╣ рд╕рд░реНрд╡рд╡рд┐рджрд┐рдд рд╣реИ рдХрд┐ Sieve of Eratosthenes (RE) рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рджрд┐рдпреЛрдВ рд╕реЗ рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрдзреНрдпрдпрди рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдбреВрдм рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдЬрдм рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рджреВрд╕рд░реЗ рджрд┐рди рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЗрд╖реНрдЯрддрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдХрд╛рдлреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдРрд╕рд╛ рд╣реА рдерд╛ред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдПрдлрдкреА) рдкрд░ рдПрдХ рд▓реЗрдЦ рдХреА рдЪрд░реНрдЪрд╛ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕рд╡рд╛рд▓ рдкреВрдЫрд╛: рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдЖрд░рдИ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред AF рдХреЗ рдЕрд▓реНрдк рдЬреНрдЮрд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдЙрддреНрддрд░реЛрдВ рдХреЛ рдЖрдВрдХрдиреЗ рдХрд╛ рд╕рд╛рд╣рд╕ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдЪрд░реНрдЪрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреНрдп рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реБрдП рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рддреБрд░рдВрдд рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред

O(n log logn) (1)

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рд╣реЛрдЧреА

O(n2/ logn) (2)

рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЖрдк рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 10 рдорд┐рд▓рд┐рдпрди рд╕рдВрдЦреНрдпрд╛рдПрдБ рдЫреАрдиреА рдЧрдИ рд╣реИрдВред рдореЗрд░реА рджрд┐рд▓рдЪрд╕реНрдкреА рдмрди рдЧрдИ рдФрд░ рдореИрдВрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╖реНрдЯрддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдбреЗрд▓реНрдлреА -7 рдореЗрдВ, рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рд╛:

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1
program EratosthenesSieve; // Sieve of Eratosthenes {$APPTYPE CONSOLE} uses SysUtils, DateUtils,Math; const version ='1.0.1d1'; N = 1000000000; // number of primes var sieve : array [2..N] of boolean; // false if prime t0, t1,dt : TDateTime; O,C : Extended; procedure init; var i : integer; begin for i:=2 to n do sieve [i] := false; end; //init procedure calc (start : integer); var prime, i : integer; breakLoop, exitProc : Boolean; begin prime := start; exitProc := false; repeat // find next prime prime := prime+1; while (prime<N) and sieve[prime] do inc (prime); i:= sqr(prime); // delete if i<= N then begin breakLoop := false; repeat if i<= N then begin sieve [i] := true; inc (i,prime); end else // if i<= N breakLoop := true; until breakLoop; end else // if prime+prime<= N exitProc := true; until exitProc; end; //calc procedure print; var i :integer; found : integer; begin found := 0; for i:=2 to N do if not sieve [i] then begin // write (i,', '); inc(found); end; writeln; writeln ('Found ',found,' primes.'); end; // begin // program body writeln ('Sieve of Eratosthenes version ', version); writeln('N= ',N); init; t0 := now; writeln('Program started ',DateTimeToStr(t0)); t0 := now; calc (1); t1 := now; writeln('Program finished ',DateTimeToStr(t1)); dt := SecondSpan(t1,t0); writeln ('Time is ',FloatToStr(dt),' sec.'); O := N* ln(ln(N)); C := dt/O; writeln ('O(N ln ln N)= ',O,' C=',C); O := sqr(N)/ln(N); C := dt/O; writeln ('O(N*N/ln N)= ',O,' C=',C); print; writeln ('Press Enter to stop...'); readln; end. 


рдЙрд▓рдЯрд╛ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд░рдИ рдХреЛ рдЫрд▓рдиреА рдмреВрд▓рд┐рдпрди рд╕рд░рдгреА рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдЗрдо рд╣реИ, рддреЛ рдЗрд╕реЗ рдЧрд▓рдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЪрд╛рд▓рди (рдирд╣реАрдВ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ 3 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ: рдЖрд░рдИ - рдЗрдиреАрдЯ рдХреА рдЧрдгрдирд╛, рдЖрд░рдИ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ (рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдФрд░ рд╕реНрдЯреНрд░рд╛рдЗрдХрдереНрд░реВ) - рдХреИрд▓реНрдХ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдП рдЧрдП рдкреНрд░рд┐рдВрдЯреЛрдВ рдХреА рдЫрдкрд╛рдИ - рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкреНрд░рд╛рдЗрдо рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдЙрдЯ-рдЖрдЙрдЯ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛: рдПрди = 1000 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдХреИрд▓реНрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореИрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдЕрдЧрд▓реЗ рдкреНрд░рд╛рдЗрдо рдирдВрдмрд░ рдХреЗ рд▓рд┐рдП, рдЖрд░рдИ рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рд╣рдЯрд╛рдПрдВ

i2,i2+i,i2+2i,...



рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо 17.6 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд┐рд▓рд┐рдпрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖред рдореЗрд░реЗ рдкреАрд╕реА рдкрд░ (3.4 рдЧреАрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдЗрдВрдЯреЗрд▓ рдХреЛрд░ рдЖрдИ 7 рд╕реАрдкреАрдпреВ)ред
рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рд╕рдо рдФрд░ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдЧреБрдгреЛрдВ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред

рд▓реЗрдореНрдорд╛ 1. 1) рд╡рд┐рд╖рдо + рд╡рд┐рд╖рдо = рд╕рдо; 2) рд╡рд┐рд╖рдо + рд╕рдо = рд╡рд┐рд╖рдо; рей) рд╕рдо + рднреА = рднреАред

рд╕рдмреВрдд

1) (2n+1)+(2m+1)=2n+2m+2 рд╡рд┐рднрд╛рдЬреНрдп рджреНрд╡рд╛рд░рд╛ 2. рдЯреАрд╕реАрдбреАред
2) (2n+1)+(2m)=2n+2m+1 рд╢реЗрд╖ рдХреЗ рдмрд┐рдирд╛ 2 рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рдирд╣реАрдВред QEDред
3) (2n)+(2m)=2n+2m рд╡рд┐рднрд╛рдЬреНрдп рджреНрд╡рд╛рд░рд╛ 2. рдЯреАрд╕реАрдбреАред

рд▓реЗрдореНрдорд╛ 2. рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╡рд░реНрдЧ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рд╕рдмреВрддред (2n+1)2=4n2+4n+1 рд╢реЗрд╖ рдХреЗ рдмрд┐рдирд╛ 2 рд╕реЗ рд╡рд┐рднрд╛рдЬреНрдп рдирд╣реАрдВред QEDред

рдиреЛрдЯред 2 рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдПрдХ рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рд╖рдо рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

i2,i2+2i,i2+4i,... (3)

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕рднреА рд╕рдо рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд init рдЖрд░рдВрднреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 2
 program EratosthenesSieve; // Sieve of Eratosthenes {$APPTYPE CONSOLE} uses SysUtils, DateUtils,Math; const version ='1.0.1d1'; N = 1000000000; // number of primes var sieve : array [2..N] of boolean; // false if prime t0, t1,dt : TDateTime; O,C : Extended; procedure init; var i : integer; begin for i:=2 to n do sieve [i] := not odd(i); end; //init procedure calc (start : integer); var prime,prime2, i : integer; breakLoop, exitProc : Boolean; begin prime := start; exitProc := false; repeat // find next prime prime := prime+1; while (prime<N) and sieve[prime] do inc (prime); // i:= prime*prime; i:= sqr(prime); prime2 := prime+prime; // delete if i<= N then begin breakLoop := false; repeat if i<= N then begin sieve [i] := true; inc (i,prime2); end else // if i<= N breakLoop := true; until breakLoop; end else // if prime+prime<= N exitProc := true; until exitProc; sieve [2] := false; end; //calc procedure print; var i :integer; found : integer; begin found := 0; for i:=2 to N do if not sieve [i] then begin // write (i,', '); inc(found); end; writeln; writeln ('Found ',found,' primes.'); end; // begin // program body writeln ('Sieve of Eratosthenes version ', version); writeln('N= ',N); init; t0 := now; writeln('Program started ',DateTimeToStr(t0)); t0 := now; calc (2); t1 := now; writeln('Program finished ',DateTimeToStr(t1)); dt := SecondSpan(t1,t0); writeln ('Time is ',FloatToStr(dt),' sec.'); O := N* ln(ln(N)); C := dt/O; writeln ('O(N ln ln N)= ',O,' C=',C); O := sqr(N)/ln(N); C := dt/O; writeln ('O(N*N/ln N)= ',O,' C=',C); print; writeln ('Press Enter to stop...'); readln; end. 


рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗ 9.9 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред - рд▓рдЧрднрдЧ рджреЛрдЧреБрдирд╛ рддреЗрдЬред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐

dt=CтИЧO,



рдЬрд╣рд╛рдБ dt - рдорд╛рдкрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп;
рд╕реА - рд╕рдордп рдХреЗ рдЖрдпрд╛рдо рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░;
O - рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдореВрд▓реНрдпрд╛рдВрдХрдиред

рдпрд╣рд╛рдБ рд╕реЗ рдкрд░рд┐рдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реА рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (1) рдФрд░ (2)ред рдХреЗ рд▓рд┐рдП N=106 рдФрд░ рдХрдо dt рд╢реВрдиреНрдп рдХреЗ рдХрд░реАрдмред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдмрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рдбреЗрдЯрд╛ рд▓рд╛рддрд╛ рд╣реВрдВ рдПрди

рдПрди(1)(2)
1071.69 cdot10тИТ92.74 cdot10тИТ9
1085.14 cdot10тИТ91.47 cdot10тИТ8
1095.80 cdot10тИТ91.29 cdot10тИТ7

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдЕрдиреБрдорд╛рди (1) рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред рджреВрд╕рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдорд╛рди рддрд╕реНрд╡реАрд░ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдиреБрдХреНрд░рдо (3) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдореЗрд░рд┐рдХрд╛ рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдореИрдВ рдЙрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ рдЬрд╣рд╛рдВ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреЗ рд▓реЗрдЦрдХ рдЦреБрдж рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдпреБрджреНрдз рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рдореБрджреНрд░ рдореЗрдВ рдбреВрдм рдЧрдП рдФрд░ рдЗрд╕ рдХрд╛рдо рд╕реЗ рдЪреВрдХ рдЧрдПред

"рд░реИрдЦрд┐рдХ рдХреНрд░рдо" рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдкреБрдирд╢реНрдЪ

Source: https://habr.com/ru/post/hi450604/


All Articles