Yêu cầu:
– Nhập 2 số nguyên a,b.
a. Tìm USC lớn nhất của 2 số đó
b. Tìm bội số chung nhỏ nhất của 2 số đó
Phân tích:
– Dùng thuật toán Euclid để tìm USC lớn nhất
– BSC nhỏ nhất = a*b / USCLN(a, b)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/************************************************************ #include "stdio.h" #include "conio.h" int uscln(int a, int b); int bscnn(int a, int b); void main() { int a = 6, b = 18; printf("USCLN(%d,%d) = %d\n", a, b, uscln(a, b)); printf("BSCNN(%d,%d) = %d\n", a, b, bscnn(a, b)); getch(); } // dung thuat toan Euclid int uscln(int a, int b) { if(a == 0 && b == 0) return -1; else return (b == 0)? a : uscln(b, a%b); } int bscnn(int a, int b) { if(a == 0 || b == 0) return -1; else return (a*b/uscln(a, b)); } |
Kết quả:
1 2 |
USCLN(6,18) = 6 BSCNN(6,18) = 18 |
Leave a Reply