Diễn đàn thptNinhHai
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
Tìm kiếm
 
 

Display results as :
 


Rechercher Advanced Search

Latest topics
» Ảnh đẹp của đất nước
USCLN của a và b I_icon_minitime26/7/2013, 11:49 am by hungchng

» Lại thêm một năm đậu 100%
USCLN của a và b I_icon_minitime15/6/2013, 7:30 pm by hungchng

» Loi giai đề thi toán thpt 2013
USCLN của a và b I_icon_minitime4/6/2013, 8:33 pm by hungchng

» Khóa 2005-2008
USCLN của a và b I_icon_minitime17/11/2012, 11:42 pm by toihoikieuky

» Chuyen de LTDH 2013
USCLN của a và b I_icon_minitime4/11/2012, 11:23 am by hungchng

» Đề Toán 01 boxmath.vn
USCLN của a và b I_icon_minitime21/10/2012, 10:49 am by hungchng

» 50 bai toan bat dang thuc
USCLN của a và b I_icon_minitime5/10/2012, 6:34 pm by hungchng

» 40 bài HHGT phẳng DuongTron- Elip có lời giải
USCLN của a và b I_icon_minitime4/10/2012, 7:01 pm by hungchng

» PP giải toán HHKG trong đề thi ĐH
USCLN của a và b I_icon_minitime4/10/2012, 9:46 am by hungchng


USCLN của a và b

Go down

USCLN của a và b Empty USCLN của a và b

Bài gửi by hungchng 11/1/2010, 7:48 pm

Các em đã học cách tìm USCLN của 2 số a,b trong chương trình toán nhưng chuyển qua Tin, các em chưa chuyển được nhưng tính chất của USCLN là hai số a,b phải chia hết cho USCLN
Khi chuyển qua học cấu trúc Lặp ở ngôn ngữ lập trình Pascal các em mô tả thuật Toán như sau

B1: tìm số nhỏ nhất trong 2 số a,b {lý do nếu số lớn chia hết cho số nhỏ thì số nhỏ là USCLN}
B2: i <-- 1;
B3: Nếu a và b chia hết cho i thì USCLN <-- i
B4: i <-- i+1; Nếu i<= Min trở lại B3
B5: In ra USCLN
B6: Kết thúc

Program USCLN;
uses crt;
var a,b,min,US,i:word;
begin
clrscr;
write('Moi nhap so a ');readln(a);
write('Moi nhap so b ');readln(b);
if a>b then min:=b else min:=a;
i:=1;
repeat
if (a mod i = 0) and (b mod i = 0)
then US:=i;
i:=i+1;
until i>min;
writeln('USCLN la ',US:4);
readln
end.


Thuật toán khác. Mời các bạn tham khảo: Gọi u là USCLN của a và b.

- Nhận thấy u không thế lớn hơn a và b.
- u phải là USC của a và b và là lớn nhất.

Vì thế mình đưa ra ý tưởng là u là ước chung đầu tiên của a và b xét từ trên xuống. Khi đó u chính là USCLN của a và b.

1. u <- a
2. Nếu u là USC của a và b thì chuyển đến bước 4.
3. u <- u - 1. Lặp lại bước 2.
4. Đưa ra màn hình giá trị của u

Chương trình như sau:
Mã lệnh:
Program USCLN;
Var a, b, u: Word;
Begin
Write("Nhap a, b: ");
Readln(a, b);
u := a;
While (a mod u <> 0) or (b mod u <> 0) do
u := u - 1;
Writeln("USCLN của a va b la: ", u);
End.


Nhận thấy nếu a lớn hơn b đáng kể thì sẽ bị thừa rất nhiều số bước lặp vì vậy sẽ cải tiến lần 1 bằng cách chọn giá trị nhỏ nhất của a và b.

1. u <- a
2. Nếu b < u thì u <- b
3. Nếu u là USC của a và b thì chuyển đến bước 5.
4. u <- u - 1. Lặp lại bước 3.
5. Đưa ra màn hình giá trị của u

Chương trình như sau:
Mã lệnh:
Program USCLN;
Var a, b, u: Word;
Begin
Write("Nhap a, b: ");
Readln(a, b);
u := a;
If (b < u) then
u := b;
While (a mod u <> 0) or (b mod u <> 0) do
u := u - 1;
Writeln("USCLN của a va b la: ", u);
End.


Khi dạy học sinh đến vòng lặp For chưa học While hay Repeat các em cũng có ý tưởng làm bài này với câu lệnh For.

Var a, b, i, uc, min :Word;
Begin
Write('Nhap 2 so:');Readln(a,b);
If a< b Then min:=a else min:=b;
For i:=1 to min do
If (a mod i =0) and (b mod i = 0) then uc:=i;
Write(' UCLN cua ', a,' va', b,' la', uc);
End.


Có thể dùng thuật toán trừ để giảng bài toán này cho hs vì thấy nó khá đơn giản và dễ hiểu.

Mã lệnh:
program USCLN;
var
gcd, a, b: word;
begin
write('nhap a, b: ');
readln(a, b);
while a <> b do
if a > b then a := a - b else b := b - a;
gcd := a; {hoặc b}
writeln('USCLN:',gcd);
end.

Đoạn code này được viết ngắn gọn nhằm mô tả thuật toán là chính, thuật toán kết thúc khi a = b, khi đó ước số chung lớn nhất có thể là a hoặc b. Nhược điểm của thuật toán này là nếu a, b chênh lệch lớn thì số lần lặp sẽ nhiều.
hungchng
hungchng

Tổng số bài gửi : 257
Join date : 10/01/2010

http://hung.vietnam.no/thptNinhHai/

Về Đầu Trang Go down

Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết