unit LNumbers; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Edit1: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Label14: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var K: longword; {число введённых первых чисел натурального ряда} P: longword; {число простых чисел} M: longword; {число несовершенных чисел} C: byte; {число совершенных чисел} X: longword; {число сверхсовершенных чисел} N: longword; {натуральное число N} D: longword; {делитель числа N} T: real; {остаток от целочисленного деления N на число D} S: longword; {сумма делителей числа N} P0: real; M0: real; C0: real; X0: real; begin P:=1; M:=0; C:=0; X:=0; K:=StrToInt(Edit1.Text); Label3.Caption:='Среди первых '+IntToStr(K)+ ' чисел натурального ряда совершенные: '; Label4.Caption:=''; Label5.Caption:='Среди первых '+IntToStr(K)+' чисел натурального ряда ' ; for N:=2 to K do begin S:=1; for D:=2 to Trunc(Sqrt(N)) do begin T:=N mod D; if T=0 then S:=S+D+Trunc(N/D) end; if Frac(Sqrt(N))=0 then S:=S-Trunc(Sqrt(N)); if S=1 then P:=P+1 else if SN then X:=X+1 else if S=N then begin C:=C+1; Label4.Caption:=Label4.Caption+IntToStr(N)+' '; end; end; Label6.Caption:=' число простых чисел равно '+IntToStr(P); Label7.Caption:='число непростых несовершенных чисел равно '+IntToStr(M); Label8.Caption:=' число совершенных чисел равно '+IntToStr(C); Label9.Caption:=' число сверхсовершенных чисел равно '+IntToStr(X); P0:=P/K*100; M0:=M/K*100; C0:=C/K*100; X0:=X/K*100; Label10.Caption:=' простых чисел '+ FloatToStrF(P0,ffFixed,24,15)+' процентов'; Label11.Caption:='непростых несовершенных чисел '+ FloatToStrF(M0,ffFixed,24,15)+' процентов'; Label12.Caption:=' совершенных чисел '+ FloatToStrF(C0,ffFixed,24,15)+' процентов'; Label13.Caption:=' сверхсовершенных чисел '+ FloatToStrF(X0,ffFixed,24,15)+' процентов' end; procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:=''; Edit1.SetFocus; Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; procedure TForm1.Button3Click(Sender: TObject); begin MessageDlg('Сумма делителей совершенного числа равна самому числу.', MtInformation,[MbOk],0); Edit1.SetFocus; end; procedure TForm1.Button4Click(Sender: TObject); begin MessageDlg('Сумма делителей несовершенного числа меньше самого числа.', MtInformation,[MbOk],0); Edit1.SetFocus; end; procedure TForm1.Button5Click(Sender: TObject); begin MessageDlg('Сумма делителей сверхсовершенного числа больше самого числа.', MtInformation,[MbOk],0); Edit1.SetFocus; end; procedure TForm1.Button6Click(Sender: TObject); begin MessageDlg('Сумма делителей простого числа равна 1.', MtInformation,[MbOk],0); Edit1.SetFocus; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin case length(Edit1.Text) of 0: case Key of #8 : begin Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; '1'..'9' : begin Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; else Key := Chr(0); end; 1..9: case Key of #8 : begin Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; '0'..'9' : begin Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; else Key := Chr(0); end; else case Key of #8 : begin Label3.Caption := ''; Label4.Caption := ''; Label5.Caption := ''; Label5.Caption := ''; Label6.Caption := ''; Label7.Caption := ''; Label8.Caption := ''; Label9.Caption := ''; Label10.Caption := ''; Label11.Caption := ''; Label12.Caption := ''; Label13.Caption := ''; end; else Key := Chr(0); end; end; end; end.