Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: Tìm Ước chung lớn nhất của 2 số trong lập trình C?

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    1

    Mặc định Tìm Ước chung lớn nhất của 2 số trong lập trình C?

    Ông thày kêu làm bài tập tìm UCLN của 2 số , mình chưa hiểu về bài này lắm , ai zup dc ko ( viết trên C++ )

  2. #2
    Ngày gia nhập
    10 2009
    Bài viết
    23

    Bạn có thể áp dụng thuật toán Euclid bằng công thức truy hồi sau :
    uscln( 0, b ) = b
    uscln( a, b ) = uscln( b % a, a )
    bạn đánh code đi, bí chổ nào thì hỏi ?

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    3

    mình có thuật toán này bạn xem qua nhé, về độ phức tạp thì tốt hơn phương pháp kia

    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3.  
    4.  
    5. int main()
    6. {
    7.  
    8.     int a, b,c;
    9.    
    10.     //input value of a
    11.     printf("a = ");
    12.     scanf("%d",&a);
    13.  
    14.         //input value of b
    15.     printf("b = ");
    16.     scanf("%d",&b);
    17.    
    18.  
    19.     while((c = (a%b)) != 0)
    20.     {
    21.         a = b;
    22.             b = c;
    23.     }
    24.  
    25.     printf("UCLN = %d",b);
    26.     getch();
    27.     return 0;
    28. }
    hy vọng giúp ích cho bạn

  4. #4
    Ngày gia nhập
    12 2009
    Bài viết
    3

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. main()
    4. {
    5.       int a,b,i;
    6.       printf("a=");
    7.       scanf("%d", &a);
    8.       printf("b=");
    9.       scanf("%d", &b);
    10.       if(a<b)
    11.       for(i=a;i>=1;i--)
    12.          if(a%i==0&&b%i==0)
    13.          {
    14.          printf("UCLN la %d", i);
    15.          break;
    16.          }
    17.       if(b<a)
    18.       for(i=b;i>=1;i--)
    19.          if(a%i==0&&b%i==0)
    20.          {
    21.          printf("UCLN la %d", i);
    22.          break;
    23.          }
    24.          getch();
    25.          return 0;
    26. }
    mình chỉ dùng thuật toán đơn giản thế này thôi,ko biết có ổn không,nhưng mình vẫn chạy ngon!
    các bạn góp ý!

  5. #5
    Ngày gia nhập
    12 2009
    Bài viết
    190

    Sưu tầm trên 4rum đấy :
    C++ Code:
    1. #include<iostream>
    2. #include<conio.h>
    3. using namespace std;
    4. int ucln(int a,int b)
    5. {
    6.     return (b==0)?a:ucln(b,a%b);
    7. }
    8. int main()
    9. {
    10.     int a,b;
    11.     cout<<"Nhap hai so :";
    12.     cin>>a>>b;
    13.     cout<<"Uoc chung lun nhat hai so : "<<ucln(a,b)<<endl;
    14.     getche();
    15.     return 0;
    16. }
    Đã được chỉnh sửa lần cuối bởi pannaruto : 24-01-2010 lúc 04:20 AM.

  6. #6
    Ngày gia nhập
    10 2009
    Bài viết
    23

    Mặc định Tìm Ước chung lớn nhất của 2 số trong lập trình C?

    Mấy bài của các bác ở trên điều thiếu xét trường hợp a = 0 và b = 0 thì làm gì có ước số chung lớn nhất ?

  7. #7
    Ngày gia nhập
    12 2008
    Bài viết
    117

    Trích dẫn Nguyên bản được gửi bởi trungvv01438 Xem bài viết
    mình có thuật toán này bạn xem qua nhé, về độ phức tạp thì tốt hơn phương pháp kia

    C Code:
    1. #include <conio.h>
    2. #include <stdio.h>
    3.  
    4.  
    5. int main()
    6. {
    7.  
    8.     int a, b,c;
    9.    
    10.     //input value of a
    11.     printf("a = ");
    12.     scanf("%d",&a);
    13.  
    14.         //input value of b
    15.     printf("b = ");
    16.     scanf("%d",&b);
    17.    
    18.  
    19.     while((c = (a%b)) != 0)
    20.     {
    21.         a = b;
    22.             b = c;
    23.     }
    24.  
    25.     printf("UCLN = %d",b);
    26.     getch();
    27.     return 0;
    28. }

    hy vọng giúp ích cho bạn
    ---> Độ phức tạp là không hơn gì cái trước. Có thể nhìn qua thì số bước tính % sẻ ít hơn số bước tính trừ. Nhưng thậy ra thì như nhau thôi, vì lúc chạy trình biên dịch C tự động chuyển từ phép % sang phép - cả mà thôi.

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    61

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. int USCLN(int ,int );
    4. int USCLN(int a,int b){
    5. int r;
    6. while(b!=0)
    7.     {
    8.     r=a%b;
    9.     a=b;
    10.     b=r;
    11. }
    12. return a;
    13. }
    14. void main(){
    15. int a,b;
    16. printf("\nNhap so a :");
    17. scanf("%d",&a);
    18. printf("\nNhap so b :");
    19. scanf("%d",&b);
    20. printf("\nUoc so chung lon nhat :%d",USCLN(a,b));
    21. }

  9. #9
    Ngày gia nhập
    04 2009
    Nơi ở
    Hà Nội
    Bài viết
    712

    Mình đề nghị là các bạn không nên post hẳn bài làm lên cho các mem mới, như thế sẽ làm hao mòn khả năng suy nghĩ của các bạn đó.Nên đưa ra hướng dẫn, mã giả,đoạn code của hàm đó thui.Mấy bác mem mới này ăn sẵn quá!Bài viết cuối của bạn pannaruto là hay nhất, sạch đẹp.

  10. #10
    Ngày gia nhập
    01 2008
    Bài viết
    2

    em viết thế này, các bác cho ý kiến, nó đang báo lỗi:
    praise before ELSE
    confuse by earlier bailing

    C Code:
    1. // tim ucln cua 2 so
    2. // thuat toan Euclid:
    3. // ucln(0,b)=b
    4. //ucln(a,b)=ucln(b%a,a)
    5. #include<stdio.h>
    6. #include<conio.h>
    7. int ucln(int a, int b)
    8. {
    9.    
    10.     if(a==0) return b;
    11.     if(b==0) return a;
    12.     if(a>b) return ucln(a%b,b) else return ucln(b%a,a)
    13. }
    14. void main()
    15. {
    16.     int a,b;
    17.     int result;
    18.     printf("nhap vao gia tri a:= \n");
    19.     scanf("%d",&a);
    20.     printf("nhap vao gia tri b:= \n");
    21.     scanf("%d",&b);
    22.     result=ucln(a,b);
    23.     printf("ket qua la: %d",result);
    24.     getch();
    25.    
    26. }
    Đã được chỉnh sửa lần cuối bởi hoan_micheal : 06-02-2010 lúc 01:47 AM.

Các đề tài tương tự

  1. Thuật toán tìm bội chung nhỏ nhất trong lập trình C++?
    Gửi bởi dungtimtoinua2008 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 20
    Bài viết cuối: 10-01-2014, 10:31 PM
  2. Tìm xâu chung lớn nhất của n xâu trong lập trình C?
    Gửi bởi phuchaontu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 05-09-2011, 09:56 AM
  3. Tìm ước chung lớn nhất hai số trong C#?
    Gửi bởi rogerminh2401 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 20-03-2011, 10:19 PM
  4. Tìm ước số chung lớn nhất trong mảng ?
    Gửi bởi iTspyware trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-07-2009, 09:40 PM
  5. Tìm ước chung lớn nhất trong mảng một chiều các số nguyên dương trên VC++???
    Gửi bởi rukawa1184 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 15-05-2009, 05:02 PM

Quyền hạn của bạn

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