Код:
var
Form1: TForm1;
M,N,S:integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
M:=StrToInt(Edit1.Text);
N:=StrToInt(Edit2.Text);
if M>N then M:=M-N
else N:=N-M;
while M=N do
begin
ShowMessage('Наибольший общий делитель найден!');
S:=M;
Edit3.Text:=IntToStr(S);
end;
end;
end.
Я сделал так и конечно это не правильно, но я в тупике и не знаю как из него выбраться.
Объясню проблему:
Даны два натуральных числа, нужно найти наибольший общий делитель.
Для этого...
1) если числа равны, взять одно из них для ответа, если нет то 2
2) заменить большее число разностью большего и меньшего из чисел (M-N)
3) Вернуться к выполнению п.1.
То-есть, нужно повторять операцию выявления максимального числа и замены его на разность максимального и минимального, до того, как получатся равные числа и тогда одно из равных чисел будет взято за ответ.
Цикл то я вроде правильно задал, вот с повтором не могу разобраться...
Вот пример:
M=32 N=24
M>N, true, M:=32-24; M:=8; M>N, false, N:=24-8; N:=16; M>N; false, N:=16-8; N:=8; M=N; Ответ:=M
=((
Помогите пожалуйста