![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Неполучается найти наибольший общий делитель двух чисел.
Поискал в инете, вот нашел. Где то здесь есть ошибка. Помогите найти и исправить. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
p, n1, m1, n, m, R: LongWord;
begin
n:= StrToInt(edit1.text);
m:= StrToInt(edit2.Text);
if (n = 0) or (m = 0) then
R:= 0
else
begin
if m < n then
begin
n1 := m;
m1 := n;
end;
begin
n1 := n;
m1 := m;
end;
while n1 > 0 do
begin
p := m1 mod n1;
m1 := n1;
n1 := p;
end;
R := m1;
panel1.Caption:=IntToStr(R);
end;
end;
end. |
|
#2
|
|||
|
|||
|
Edit1,Edit2- исходные числа
Edit3- максим общий делитель Код:
uses Math;
{---------------------------------------------------------
функция возвращает макс общий делитель
----------------------------------------------------------}
function GetMaxDiv(x1,x2:integer):integer;
begin
if (x1=0) or (x2=0) then Result:=-1
else
begin
Result:=min(x1,x2);
while (x1 mod Result <> 0) or (x2 mod Result <> 0) do
dec(Result)
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(GetMaxDiv(StrToInt(Edit1.Text),StrToInt(Edit2.Text)));
end;
Последний раз редактировалось chainik, 04.10.2011 в 16:59. |