Viết chương trình pascal tìm ước chung lớn nhất và bội chung nhỏ nhất của hai số a và b được nhập từ bàn phím Làm giúp với ! Các câu hỏi tương tự
Ví dụ: USCLN(18, 24) = 6 và BSCNN(18, 24) = 72 Yêu cầu: Input: a, b là 2 số tự nhiên. Output: USCLN và BSCNN của a và b Một số lưu ý: - Nếu i là ước số của a và b thì a và b đồng thời chia hết cho i - Luôn luôn có tối thiểu một USCLN của a và b là 1. - Nếu i là USCLN thì i là ước số nhỏ hơn cả a lẫn b và gần a, b nhất. Như vậy, nếu sử dụng một vòng lặp để kiểm tra a,b có đồng thời chia hết cho i hay không thì i là USCLN khi: + i là USC (a, b cùng chia hết cho i) cuối cùng nếu i lặp từ 1 đến a (hoặc b). + i là USC (a, b cùng chia hết cho i) đầu tiên nếu lặp từ a (hoặc b) quay về 1. - BSCNN(a, b) = a * b / (USCLN(a, b) Hướng dẫn:Bài toán được thực hiện qua 3 bước cụ thể như sau: - Thông báo nhập liệu, và nhập dữ liệu vào cho a và b - Tiến hành tính USCLN(a, b): Sử dụng vòng lặp for, lặp từ a lùi về 1. Kiểm tra nếu a, b đều chia hết cho i thì gọi lệnh break để dừng vòng lặp. ==> i là USC đầu tiên gần a, b nhất ==>USCLN - Xuất kết quả của USCLN(a, b) , BSCNN (a, b) ra màn hình. Chương trình:Program USCLN; Use crt; Var a , b :integer; // Khai bao bien su dung Begin Write(‘Nhap vao so a:’); // Thong bao nhap lieu Readln(a); // Nhap gtri a (voi &a, la lay d/c bien a,) Write(‘Nhap vao so b:’); // Thong bao nhap lieu Readln(b); // Nhap gtri b (voi &b, la lay d/c bien b,) For i:=a downto 1 do If ((a mod i = 0) and (b mod i = 0)) then // Kiem tra a, b co chia het Break; Writeln(‘USCLN (‘,a,’,’,b,’):’, i); // Xuat ket qua USCLN(a, b) Writeln(‘BSCNN (‘,a,’,’,b,’):’, a*b div i); // Xuat ket qua USCLN(a, b) Readln; End.
B(a) : tập hợp các bội của a.
3. Cách tìm ước và bội :Ta có thể tìm các bội của một số khác 0 bằng cách nhân số đó lần lược cho 1, 2, 3, … 4. Tìm USCLN và BSCNNViết chương trình nhập vào hai số nguyên dương a, b bất kỳ, hiển thị ước chung lớn nhất của hai số và bội chung nhỏ nhất của hai số đó. F9 kiểm tra lỗi chương trình Tìm USCLN và BSCNN chạy thử chương trình Tìm USCLN và BSCNN Program UC_BC; Uses crt; Var a, b,x,y,uc: integer; bc:real; BEGIN Clrscr; Writeln('Nhap so thu nhat '); readln(a); x:=a; Writeln('nhap so thu hai '); readln(b); y:=b; While (a<>b) do If a>b then a:=a-b else b:=b-a; uc:=a; bc:=(x*y)/uc; Write('USCLN va BSCNN ',x,' va ',y,' la US ',uc,' BS ',bc:2:0); Readln End.
|