PDA

View Full Version : [Q] euclic



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 đỡ.

haison3000
26-07-2003, 05:04
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 đỡ.

ky hieu USCLN la f()
Thuat toan Euclic la:
Uscln của u/v = Uscln của v/u-v neu u>v.
Uscln của u/v = Uscln của v-u/u neu u<v.
Uscln của u/v = u neu u=v.
Tu do ban de dang nghi ra cahc cai dat thoi.
gia su u>v: ( doan t:=u;u:=v;v:=t; de bien doi sao cho u>v)
f(u,v)=f(u,u-v).
Tim f(u,u-v) bang cach lap doan code tren lai nue u<>v.
Vong lap dung khi u=v ( luc nay duong nhien f(u,v)=u).

assault
26-07-2003, 19:28
oh,khá đơn giản nhỉ,vậy mà mình nghĩ phức tạp.
Thank you very much.