Nêu thuật toán tối ưu để tìm ƯCLN của 2 số nguyên
Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
1)
a) 18 = 2.3²
30 = 2.3.5
ƯCLN(18; 30) = 2.3 = 6
b) 24 = 2³.3
48 = 2⁴.3
ƯCLN(24; 48) = 2³.3 = 24
c) 18 = 2.3²
30 = 2.3.5
15 = 3.5
ƯCLN(18; 30; 15) = 3
d) 24 = 2³.3
48 = 2⁴.3
36 = 2².3²
ƯCLN(24; 48; 36) = 2².3 = 12
2) a) 174 = 18 . 9 + 12
18 = 12 . 1 + 6
12 = 6 . 2
Vậy ƯCLN(174; 18) = 6
b) 124 = 16 . 7 + 12
16 = 12 . 1 + 4
12 = 4 . 3
⇒ ƯCLN(124; 16) = 4
⇒ BCNN(124; 16) = 124 . 16 : 4 = 496
Thuật toán tìm kiếm nhị phân thực hiện tìm kiếm một mảng đã sắp xếp bằng cách liên tục chia các khoảng tìm kiếm thành 1 nửa. Bắt đầu với một khoảng từ phần tử đầu mảng, tới cuối mảng. Nếu giá trị của phần tử cần tìm nhỏ hơn giá trị của phần từ nằm ở giữa khoảng thì thu hẹp phạm vi tìm kiếm từ đầu mảng tới giửa mảng và nguợc lại. Cứ thế tiếp tục chia phạm vi thành các nửa cho dến khi tìm thấy hoặc đã duyệt hết.
Thuật toán tìm kiếm nhị phân tỏ ra tối ưu hơn so với tìm kiếm tuyết tính ở các mảng có độ dài lớn và đã được sắp xếp. Ngược lại, tìm kiếm tuyến tính sẽ tỏ ra hiệu quả hơn khi triển khai trên các mảng nhỏ và chưa được sắp xếp.
Ý tưởng: Sau khi nhập dãy xong rồi chúng ta sẽ xét từng phần tử trong dãy nếu có phần tử nào chia 10 dư 0 hoặc 5 thì tăng dem lên, và dem chính là két quả của đề bài
int gcd(int a, int b)
{
while (a*b != 0)
{
if (a > b)
{
a%=b;
}
else
{
b%=a;
}
}
return a + b;
}
unsigned long long ucmax(unsigned long long a, unsigned long long b)
{
if (a%b==0) return(b);
else return(b,a%b);
}