主题:求最大公倍数
Xewenh
[专家分:30] 发布于 2011-12-15 15:44:00
如何求两数最大公倍数
回复列表 (共8个回复)
沙发
Brance [专家分:30] 发布于 2011-12-15 20:41:00
#include <iostream>
using namespace std;
int MaxCommonDivisor (int a,int b)
{
if(a<b)
{
int t=a;
a=b;
b=t;
}
int tp=a%b;
while(tp!=0)
{
a=b;
b=tp;
tp=a%b;
}
return b;
}
double MinCommonMultiple(int a,int b)
{
double temp=a*b/MaxCommonDivisor(a,b);
return temp;
}
int main()
{
cout<<"input a,b"<<endl;
int a,b;
cin>>a>>b;
cout<<"Maxcommon divisor is: "<<MaxCommonDivisor(a,b)<<endl;
cout<<"Mincommon multiple is: "<<MinCommonMultiple(a,b)<<endl;
return 0;
}
板凳
Brance [专家分:30] 发布于 2011-12-15 20:45:00
最大公倍數無法求,只可求最小公倍數和最大公約數。
最小公倍數=a*b/最大公約數。
3 楼
LCYCHerish [专家分:20] 发布于 2011-12-16 11:15:00
楼上的说得对[em2][em2]
4 楼
wsgzg [专家分:0] 发布于 2011-12-16 13:48:00
有最大公倍数???求最小公倍数吧?
先求最大公约数(欧几里得算法),再将两数相乘除以最大公约数即最小公倍数
5 楼
编者无敌 [专家分:30] 发布于 2011-12-22 15:53:00
1楼您好:
其实可以用辗转相减的方法进行。辗转相除容易出错。
6 楼
lenderfox [专家分:10] 发布于 2011-12-30 10:57:00
//最大公约数
#include <stdio.h>
int main(void){
int i;
int x,y;
int k;
printf("Enter two number:\n");
scanf("%d%d",&x,&y);
k = x>y?y:x;
for(i = 1;i <= k;i ++ )
if(x%i==0 && y%i==0){
printf("result = %d\n",i);
return 0;
}
printf("Wrong!");
return 0;
}
7 楼
cgl_lgs [专家分:21040] 发布于 2011-12-30 18:02:00
辗转相减与辗转相除各有所长吧。主要是看两数大小差异问题:)
不过建议各位用最大公约求最小公倍时,先除再乘:)
理由嘛,自己先想想:)
8 楼
xike007 [专家分:0] 发布于 2012-01-08 14:11:00
//用c语言写的,想法很简单,初学者请见谅
#include <stdio.h>
int main()
{
int i;
int k,x,y;
long maxd=0,minm=0;
printf("Enter two number:\n");
while(scanf("%d%d",&x,&y)!=EOF)
{
k = x>y?y:x;
for(i = 1; i <= k; i++)
if(x%i==0&&y%i==0)
maxd=i;
k = x>y?x:y;
for(i = k; i <= x*y; i++)
if(i%x==0&&i%y==0)
{
minm=i;
break;
}
printf("Maxcommon divisor is: %d\n",maxd);
printf("Mincommon multiple is:: %d\n",minm);
}
}
我来回复