unit ListNoEratosfen; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Edit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation procedure PNoEratosfen; var N: integer; {число введённых первых чисел натурального ряда} P: integer; {число простых чисел} C: integer; {натуральное число N} D: integer; {делитель числа N} T: real; {остаток от целочисленного деления N на число D} S: integer; {сумма делителей числа N} begin N:=StrToInt(Form1.Edit1.Text); P:=1; for C := 2 to N do begin S := 1; for D := 2 to Trunc(Sqrt(C)) do begin T:=C mod D; if T=0 then S := S+C+Trunc(C/D) end; if Frac(Sqrt(C))=0 then S := S-Trunc(Sqrt(C)); if S=1 then P := P+1; end; Form1.Label2.Caption := 'Среди первых '+ IntToStr(N) + ' натуральных чисел существует ' + IntToStr(P) + ' простых чисел'; Form1.Label3.Caption := 'Процент простых чисел равен: ' + FloatToStr(P/N*100); Form1.Label4.Caption := 'Доля простых чисел равна: ' + FloatToStr(P/N); end; {$R *.dfm} procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case length(Edit1.Text) of 0: case Key of #8 : begin Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; end; '1'..'9' : begin Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; end; else Key := Chr(0); end; 1..9: case Key of #8 : begin Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; end; '0'..'9' : begin Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; end; #13 : PNoEratosfen; else Key := Chr(0); end; else case Key of #8 : begin Label2.Caption := ''; Label3.Caption := ''; Label4.Caption := ''; end; #13 : PNoEratosfen; else Key := Chr(0); end; end; end; end.