Hiển thị kết quả từ 1 đến 7 / 7
  1. #1
    Tham gia
    10-03-2009
    Bài viết
    35
    Like
    0
    Thanked 0 Times in 0 Posts

    Giúp mình tìm ước số chung lớn nhất.

    Mình đang gặp khó khăn trong việc tìm ước số chung lớn nhất của 2 số trong C#. bạn nào biết chỉ cho mình với nha.
    thanks.
    Quote Quote

  2. #2
    Tham gia
    28-05-2007
    Location
    Flower City
    Bài viết
    144
    Like
    0
    Thanked 0 Times in 0 Posts
    static int USCLN(int a, int b)
    {
    a=Math.Abs(a);
    b=Math.Abs(b);
    if (a==0 ||b==0)
    return a+b;
    while (a !=b)
    {
    if(a>b)
    a=a-b;
    else
    b=b-a;
    }
    return a;
    }

    Tham khảo thêm: http://vi.wikipedia.org/wiki/Ước_số_chung_lớn_nhất

  3. #3
    Tham gia
    03-09-2008
    Bài viết
    14
    Like
    0
    Thanked 0 Times in 0 Posts
    bạn ơi minh mún làm trong VB mà sao làm nó ko chạy. vì mình mới học VB nên chưa bít gì, thử một bài đơn giản mà ko chạy đc. thất vọng quá.
    Ai bít lỗi đoạn mã bài này sửa giúp mình với. thanks nhìu nhìu :d


    Private Sub cmdketqua_click()
    txtketqua = USCLN(Txtsoa, Txtsob)
    End Sub

    Private Sub cmdthoat_click()
    End
    End Sub

    Function USCLN(x As Integer, y As Integer) As Integer
    Dim t As Integer
    x = Abs(x)
    y = Abs(y)
    Do
    t = y
    y = x Mod y
    x = t
    Loop Until y = 0
    USCLN = x
    End Function

  4. #4
    Tham gia
    02-06-2008
    Bài viết
    102
    Like
    0
    Thanked 1 Time in 1 Post
    Quote Được gửi bởi dungnhik5h View Post

    Private Sub cmdketqua_click()
    txtketqua = USCLN(Txtsoa, Txtsob)
    End Sub
    txtketqua = USCLN(val(Txtsoa),val(Txtsob))

    Txtsoa & Txtsob cho giá trị nhập vào là kiểu string cần chuyển sang kiểu số

  5. #5
    Tham gia
    03-09-2008
    Bài viết
    14
    Like
    0
    Thanked 0 Times in 0 Posts
    van de la chuyen nhu the nao ha cau? vì tớ mới học sơ sơ nên chưa bít làm cụ thể nó như thế nào. Cậu chỉ tớ cụ thể được hok!? thanks cậu nhìu nha

  6. #6
    Tham gia
    02-06-2008
    Bài viết
    102
    Like
    0
    Thanked 1 Time in 1 Post
    Chẹp.hàm val() đó bạn

  7. #7
    Tham gia
    09-10-2003
    Location
    HN
    Bài viết
    853
    Like
    0
    Thanked 6 Times in 6 Posts
    * Mọi ước chung của a và b là ước của ƯCLN(a, b).

    * ƯCLN(a, b), khi a và b không bằng không cả hai, có thể được định nghĩa tương đương như số nguyên dương d nhỏ nhất có dạng d = a·p + b·q trong đó p và q là các số nguyên. Định lý bày đựoc gọi là đẳng thức Bézout. Các số p và q có thể tính nhờ Giải thuật Euclid mở rộng.

    * ƯCLN(a, 0) = |a|, với mọi a ≠ 0, vì mọi số khác không bất kỳ là ước của 0, và ước lớn nhất của a là |a|. Đây là trường hợp cơ sở trong thuật toán Euclid.

    * Nếu a là ước của tích b·c, và ƯCLN(a, b) = d, thì a/d là ước của c.

    * Nếu m là số nguyên dương, thì ƯCLN(m·a, m·b) = m·ƯCLN(a, b).

    * Nếu m là số nguyên bất kỳ , thì ƯCLN(a + m·b, b) = ƯCLN(a, b). Nếu m ước chung (khác 0) của a và b, thì UCLN(a/m, b/m) = ƯCLN(a, b)/m.

    * ƯCLN là một hàm có tính nhân theo nghĩa sau: nếu a1 và a2 là nguyên tố cùng nhau, thì ƯCLN(a1·a2, b) = ƯCLN(a1, b)·ƯCLN (a2, b).

    * ƯCLN là hàm giao hoán: ƯCLN(a, b) = ƯCLN(b, a).

    * ƯCLN là hàm kết hợp : ƯCLN(a, ƯCLN(b, c)) = ƯCLN(ƯCLN(a, b), c).

    * ƯCLN của ba số được tính nhờ công thức ƯCLN(a, b, c) = ƯCLN(ƯCLN(a, b), c), (hoặc vế kia của tính chất kết hợp. Điều này có thể mở rộng cho số bất kỳ các số nguyên.

    * ƯCLN (a, b) quan hệ chặt chẽ với BCNN(a, b): ta có

    ƯCLN(a, b)·BCNN(a, b) = a·b.

    Công thức này thường được dùng để tính BCNN. Dạng khác của mói quan hệ này là tính chất phân phối:

    (a, b), ƯCLN(a, c))

    BCNN(a, ƯCLN(b, c)) = ƯCLN(BCNN(a, b), BCNN(a, c)).

    * Nếu sử dụng định nghĩa ƯCLN(0, 0) = 0 và BCNN(0, 0) = 0 thì khi đó tập các số tự nhiên trở thành một dàn đầy đủ phân phối với ƯCLN.
    * Trong Hệ tọa độ Descartes, ƯCLN(a, b) biểu diễn số các điểm với tọa độ nguyên trên đoạn thẳng nối các điểm (0, 0) và (a, b), trừ chính điểm (0, 0).
    ƯCLN của hai số có thể tìm được bằng việc phân tích hai số đó ra thừa số nguyên tố, chẳng hạn để tìm ƯCLN(18,84), ta phân tích 18 = 2·32 và 84 = 22·3·7 và nhận xét rằng các thừa số chung lớn nhất của hai số này là 2·3; do đó ƯCLN(18,84) = 6. Trên thực tế phương pháp này chỉ dùng cho các số nhỏ; việc phân tích các số lớn ra thừa số nguyên tố mất rất nhiều thời gian.

    Một phương pháp hiệu quả là giải thuật Euclid dựa trên dãy liên tiếp các phép chia có dư.

    Nếu a và b là các số khác không, thì ước chung lớn nhất của a vàb có thể tính qua bội chung nhỏ nhất (BCNN) của a và b:


    C#
    int USCLN(int a, int b)
    {
    a=Math.Abs(a);
    b=Math.Abs(b);
    if (a==0 ||b==0)
    return a+b;
    while (a !=b)
    {
    if(a>b)
    a=a-b;
    else
    b=b-a;
    }
    return a;
    }

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •