Короче сидел, и в голову пришло, а можно ли разложить на простые множители число с количеством знаков больше 11 . Придумал алгоритм, написал программу, на первый взгляд работает, но оказалось , что тип Integer эквивалентен Longint и интервал его не заходит дальше чем 10 знаков. Осведомился, есть такой тип Int64,но Дельфи че то не видит в нем порядковое числительное и ругается. Вот листинг:
| Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Button1: TButton; Label2: TLabel; Label3: TLabel; StringGrid1: TStringGrid; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var a:array[1..4]of integer; c:array[1..100]of integer; b:int64; i:int64; j,k,h:int64; begin k:=0; b:=strtoint(edit1.text); h:=b; j:=1; for i:=1 to h do begin j:=j+1; if (b mod j)=0 then begin h:=i; b:=trunc(b/j); stringgrid1.Cells[k,0]:=inttostr(j); k:=k+1; j:=1; end; end; i:=1; end; procedure TForm1.Button2Click(Sender: TObject); var f:integer; begin for f:=1 to stringgrid1.ColCount do begin stringgrid1.Cells[f-1,0]:=''; end; edit1.Text:=''; end;
end.
|
А вот собственно что не так вопрос к знатокам. |