回 帖 发 新 帖 刷新版面

主题:求最大公倍数

如何求两数最大公倍数

回复列表 (共8个回复)

沙发

#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;

}

板凳

最大公倍數無法求,只可求最小公倍數和最大公約數。
最小公倍數=a*b/最大公約數。

3 楼


楼上的说得对[em2][em2]

4 楼

有最大公倍数???求最小公倍数吧?
先求最大公约数(欧几里得算法),再将两数相乘除以最大公约数即最小公倍数

5 楼

1楼您好:
       其实可以用辗转相减的方法进行。辗转相除容易出错。

6 楼

//最大公约数
#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 楼

辗转相减与辗转相除各有所长吧。主要是看两数大小差异问题:)
不过建议各位用最大公约求最小公倍时,先除再乘:)

理由嘛,自己先想想:)

8 楼

//用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);     
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册