Hiển thị kết quả từ 1 đến 10 / 10
  1. #1
    Tham gia
    05-06-2009
    Bài viết
    47
    Like
    0
    Thanked 1 Time in 1 Post

    Tìm Bội Chung nhỏ nhất

    ucln thì em làm được nhưng còn bcnn thì potay, anh em nào giúp giùm cái code tìm bcnn của 2 số nguyên ,thanks nhiều
    nhớ là code C for Dos ok! cám ơn trước
    Quote Quote

  2. #2
    Tham gia
    30-04-2009
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    #include <stdio.h>

    void main()
    {
    int a,b,max,min,z=1;
    printf("nhap so a,b ");
    scanf("%d%d",&a,&b);
    if(a>=b)
    {
    max=a;
    min=b;
    }
    else
    {
    max=b;
    min=a;
    }
    for(int i=1;(i<=max)&&(z!=0);i++)
    {
    if((i*min)%max==0)
    {
    printf("BCNN cua %d va %d la %d",a,b,i*min);
    z=0;
    }
    else
    z=1;
    }
    }
    đây là bài của mình

  3. #3
    Tham gia
    02-07-2008
    Bài viết
    93
    Like
    0
    Thanked 0 Times in 0 Posts
    Bạn lấy tích 2 số chia cho ucln sẽ đc bcnn.
    Đơn giản thế thôi.

  4. #4
    Tham gia
    05-06-2009
    Bài viết
    47
    Like
    0
    Thanked 1 Time in 1 Post
    cảm ơn đơn giản thế mà mình không nghĩ ra nhưng mà mình viết đoạn code ucln trả giá trị về a:

    int ucln(int &a,int b)
    {
    int t=0;
    while(b>0)
    {
    t=a%b;
    a=b;
    b=t;
    }
    return a;
    }

    , do đó không thể tính giá trị (a*b)/ucln(a,b); được, vì như vậy máy sẽ nhầm là (a*b)/a==b;, bạn giúp mình luôn cái code cụ thể nha thanks
    Được sửa bởi vncvubc lúc 20:37 ngày 07-06-2009

  5. #5
    Tham gia
    08-06-2008
    Bài viết
    134
    Like
    0
    Thanked 0 Times in 0 Posts
    khai báo thêm 2 biến nữa x=a và y=b như vậy sẽ tính dc

    x*y/ucln(a,b)

  6. #6
    Tham gia
    30-04-2009
    Bài viết
    21
    Like
    0
    Thanked 0 Times in 0 Posts
    BSCNN co the lam theo 2 cach 1 cach dung cong thuc toan hoc,cach con lai co the dung vong lap nhung toi thay dung vong lap gon hon do ko can viet them 1 ham USCLN

  7. #7
    Tham gia
    08-06-2008
    Bài viết
    134
    Like
    0
    Thanked 0 Times in 0 Posts

    Câu hỏi, cần giúp đỡ

    code cụ thể nè

    #include <stdio.h>
    #include <conio.h>
    void main()
    {
    clrscr();
    int a,b;
    long bsc;
    printf("Nhap so thu nhat:"); scanf("%d",&a);
    printf("Nhap so thu hai:"); scanf("%d",&b);
    bsc=a*b;
    while (a!=b)
    if (a>b) a=a-b; else b=b-a;
    printf("Ket qua:\n");
    printf("Uoc so chung lon nhat: %d\n",a);
    printf("Boi so chung nho nhat: %ld",bsc/a);
    getch();
    }

  8. #8
    Tham gia
    30-10-2007
    Location
    Hà Nội
    Bài viết
    382
    Like
    0
    Thanked 14 Times in 14 Posts

    Chào bạn!!

    Quote Được gửi bởi vncvubc View Post
    cảm ơn đơn giản thế mà mình không nghĩ ra nhưng mà mình viết đoạn code ucln trả giá trị về a:

    int ucln(int &a,int b)
    {
    int t=0;
    while(b>0)
    {
    t=a%b;
    a=b;
    b=t;
    }
    return a;
    }

    , do đó không thể tính giá trị (a*b)/ucln(a,b); được, vì như vậy máy sẽ nhầm là (a*b)/a==b;, bạn giúp mình luôn cái code cụ thể nha thanks
    Bạn nói như vậy chứng tỏ bạn không hiểu về bản chất của hàm. Trong thân hàm, các phép toán được xử lý và trả về qua return không liên quan, và ko làm ảnh hưởng tới các tham số truyền vào. Vì vậy ở đây, sau khi bạn gọi hàm ucln(a,b) nó sẽ trả về là một giá trị mà thôi, không có chuyện máy hiểu lầm (a*b)/ucln(a,b) thành (a*b)/a được... Bạn xem kỹ lại đi nhé!!

    Một điểm nữa là trong trường hợp này, bạn cũng ko cần dùng phép truyền tham chiếu, bởi hàm đã trả về qua return rồi, phép dùng tham chiếu ở đây sẽ gây ra sự thừa, lãng phí..

  9. #9
    Tham gia
    15-11-2005
    Location
    Hà Nội
    Bài viết
    696
    Like
    0
    Thanked 14 Times in 12 Posts
    Xem ở đây đi:

    Tìm bội số chung nhỏ nhất trên C

    Đủ hết các loại!

  10. #10
    Tham gia
    19-03-2009
    Bài viết
    10
    Like
    0
    Thanked 0 Times in 0 Posts
    #include <stdio.h>
    #include <conio.h>
    #include<iostream.h>

    int ucln(int a; int b)
    {
    if(a<b)
    {
    int c=a; a=b;b=c;
    }
    else
    if(a>=b)
    {
    if((a mod b)==0)return b;
    else return ucln(b;a mod b);
    }
    };

    int bcnn(int a; int b)
    {
    int c= ucln(a;b)
    return (a*b)/c;
    };

    void main()
    {
    int a,b;
    cout<<"nhap 2 so:";
    cout<<"a= ";cin>>a;
    cout<<"\nb= ";cin>>b;

    cout<<" Boi chung nho nhat cua a va b la: "<<bcnn(a;b);
    }

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
  •