assault
25-07-2003, 21:02
Hi
Mình có thắc mắc như sau ,hi vọng nhận được trả lời của các bạn.
Theo Euclic thì Uscln của u/v sẽ giống với Uscln của v/u-v.
từ nguyên tắc trên thì người ta nảy sinh ra thuật giải :
program baitap;
uses wincrt;
var x,y : integer;
function uscln(u,v :integer): integer;
var t :integer;
begin
repeat
if u<v then
begin
t:=u;u:=v;v:=t;
end;
u:= u-v;
until u=0;
uscln:=v;
end;
begin
while not eof do
begin readln(x,y);
if (x>0) and (y>0) then writeln(x,y,uscln(x,y))
end;
end.
Nhưng rõ ràng từ nguyên tắc trên tới thuật giải rõ ràng có yếu tố quyết định (bởi vì không thể tự nhiên nảy sinh ra đoạn mã trên)
Và đ ó là điều mình băn khoăn.Bởi vì từ nguyên tắc của Euclic thì mình không tự nghĩ ra được thuật giải như trên.
Mong các bạn giúp đỡ.
Mình có thắc mắc như sau ,hi vọng nhận được trả lời của các bạn.
Theo Euclic thì Uscln của u/v sẽ giống với Uscln của v/u-v.
từ nguyên tắc trên thì người ta nảy sinh ra thuật giải :
program baitap;
uses wincrt;
var x,y : integer;
function uscln(u,v :integer): integer;
var t :integer;
begin
repeat
if u<v then
begin
t:=u;u:=v;v:=t;
end;
u:= u-v;
until u=0;
uscln:=v;
end;
begin
while not eof do
begin readln(x,y);
if (x>0) and (y>0) then writeln(x,y,uscln(x,y))
end;
end.
Nhưng rõ ràng từ nguyên tắc trên tới thuật giải rõ ràng có yếu tố quyết định (bởi vì không thể tự nhiên nảy sinh ra đoạn mã trên)
Và đ ó là điều mình băn khoăn.Bởi vì từ nguyên tắc của Euclic thì mình không tự nghĩ ra được thuật giải như trên.
Mong các bạn giúp đỡ.