Sau đó, dùng một biến tạm là u để lưu giữ giá trị đầu tiên của dãy số, tiếp theo ta lần lượt xác định ước chung lớn nhất của u với từng giá trị của dãy từ vị trí thứ hai.[r]
Trang 1Xuất phát từ bài toán: “Tìm ước chung lớn nhất của 2 số ”.
Var a, b: Integer;
Begin
Repeat
Writeln('Nhap vao 2 so:'); Readln(a,b);
If (a<=0) Or (b<=0) then Writeln(‚Nhap lai!’);
Until (a>0) And (b>0);
Write('UCLN(',a,',',b,') = ');
While a <> b do Begin
If a > b Then a := a - b
Else b := b - a;
End;
Write(a);
Readln
End
Tiếp theo, Chúng ta yêu cầu học sinh: “Sử dụng chương trình con để tìm ước chung lớn nhất của ba số ” Đến đây, để viết hàm tính ước chung lớn
nhất của hai số, chúng ta nên hướng dẫn học sinh sử dụng thuật toán Ơclit để viết chương trình nhằm tăng tốc độ tính toán
Var a, b, c, tam: Integer;
Function UCLN(Var x, y: Integer): Integer;
Var tam: Integer;
Begin
While y<>0 do Begin
tam := x mod y; x := y;
y := tam;
Trang 2UCLN := x;
End;
Begin
Writeln('Nhap ba so: '); Readln(a, b, c);
Write('UCLN(',a,',',b,',',c,') = ');
tam := UCLN(a, b);
Write(UCLN(tam, c));
Readln
End
Sau khi thực hiện việc sử dụng chương trình con để tìm ước chung lớn nhất của ba số thành công Khái quát: chúng ta yêu cầu học sinh giải bài toán:
“Viết chương trình tìm ước chung lớn nhất của n số ”.
Để thực hiện, ta có thể hướng dẫn học sinh dùng thủ tục tìm ước chung lớn nhất của hai số Sau đó, dùng một biến tạm là u để lưu giữ giá trị đầu tiên của dãy số, tiếp theo ta lần lượt xác định ước chung lớn nhất của u với từng giá trị của dãy từ vị trí thứ hai Cuối cùng, ước chung lớn nhất của dãy chính là giá trị u
Var A: Array[1 100] Of Integer;
a1, u, i, n: Integer;
Procedure UCLN(Var x, y: Integer);
Var tam, tg: Integer;
Begin
While y<>0 do Begin
tam := x mod y;
x := y;
y := tam;
Trang 3End;
Begin
Write('Ban can tinh UCLN cua bao nhieu so? Nhap: '); Readln(n); For i := 1 to n do Begin
Write('So thu ',i,': '); Readln(A[i]);
End;
Write('UCLN(');
For i := 1 to n-1 do Write(a[i],',');
Write(a[n],') = ');
u := a[1];
For i:= 2 to n do
UCLN(u, a[i]);
Write(u); Writeln;
Readln
End