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
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
#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
Bạn lấy tích 2 số chia cho ucln sẽ đc bcnn.
Đơn giản thế thôi.
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
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)
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
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();
}
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í..
Xem ở đây đi:
Tìm bội số chung nhỏ nhất trên C
Đủ hết các loại!
http://diendan.congdongcviet.com <= Xem rồi biết!
#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