Hiển thị các bài đăng có nhãn Thuật toán tìm USCLN và BSCNN. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Thuật toán tìm USCLN và BSCNN. Hiển thị tất cả bài đăng

Thứ Năm, 13 tháng 9, 2012

Thuật toán tìm USCLN và BSCNN


Note: Đây là cách hiểu của mình, ko phải phát biểu thuật toán. Thuật toán được trình bày ở dạng ngôn ngữ tự nhiên và có code demo, còn tính đúng đắn đã được Euclid chứng minh, khỏi bàn cãi.
Thuật toán tìm ƯỚC SỐ CHUNG LỚN NHẤT của 2 số a và b:
Cách 1 (trừ dần):
Bước 1: so sánh a và b
  • Nếu a > b: thì lấy a – b rồi gán cho a. Quay về bước 1
  • Nếu a < b: thì lấy b – a rồi gán cho b. Quay về bước 1
  • Nếu a = b: nhảy sang bước 2.
Bước 2: USCLN là a hoặc b.
Code demo:
while (a != b)
{
     if (a > b)
          a = a - b;
     else
          b = b - a;
}
return a;