Viết chương trình tìm uscln và bscnn của 2 số a, b được nhập vào từ bàn phím.

  • lý thuyết
  • trắc nghiệm
  • hỏi đáp
  • bài tập sgk

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.

Code c:

#include <stdio.h>

void Bc(int a,int b);

int main() {

                                             int a, b;

                                             do {

                                                printf("Nhap a , b = ");

                                                scanf("%d%d",&a,&b);

                                             } while (a<=0 || b<=0);

                                             Bc(a,b);

}

void Bc(int a,int b) {

                                             int          x=a;

                                             int          y=b;

                                             while(a!=b) {

                                                if(a>b)

                                                            a=a-b;

                                                else

                                                            b=b-a;

                                             }

                                             printf("\nuoc chung lon nhat la %d",b);

                                             printf("\nboi chung nho nhat la %d",(x*y)/b);

}

Số tự nhiên a chia hết cho số tự nhiên b thì ta nói a là bội của b, còn b là ước của a.

B(a) : tập hợp các bội của a.
Ư(a) : tập hợp các ước của a.

Bội của 4 là:

0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44,…(thêm 4 để được bội số tiếp theo).

Bội của 6 là:

0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66,… (thêm 6 để được bội số tiếp theo).

Bội chung của 4 và 6 là các số cùng xuất hiện trong hai dãy trên (không tính số 0):

12, 24, 36, 48,….
Vậy bội chung nhỏ nhất của 4 và 6 là 12

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à BSCNN

Viế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ố đó.

Viết chương trình tìm uscln và bscnn của 2 số a, b được nhập vào từ bàn phím.
F9 kiểm tra lỗi chương trình Tìm USCLN và BSCNN
Viết chương trình tìm uscln và bscnn của 2 số a, b được nhập vào từ bàn phím.
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.
  1. Số hoàn hảo
  2. In ra màn hình dãy số Fibonaci
  3. Chuyển đổi hệ số

4.4 8 votes

Đánh giá bài viết