回 帖 发 新 帖 刷新版面

主题:[讨论]求助!C语言编写,求任意两数最大公约数和最小公倍数!

输入任意两个数,要求输出两数的 最大公约数和最小公倍数!
回复者必加分~

回复列表 (共22个回复)

沙发

这个其实挺简单的  知道数学原理吧  比如 辗转相除法之类的 自己想想 很容易写出来

板凳

for ( gcd=x, t=y; t; ) t^=gcd^=t^=gcd%=t;
lcm = x / gcd * y;

3 楼

本站就有原代码 搜搜很多

4 楼

会用搜索引擎么.......................

                  打开IE浏览器............................

在地址后面输入 www.baidu.com   回车

                        然后在百度那个长方框里输入   公约公倍   回车

              

5 楼


//保证均是非零整数的情况下

int gcd(int a,int b)
{
   if(a%b)gcd(b,a%b);
   else return b;
}

int lcd(int a,int b)
{
   return (((a)*(b))/gcd(a,b))
}

6 楼

楼上太强了,本人属菜鸟级别.第一次看到C的魅力//

7 楼

我觉得这仅仅是算法的魅力~

8 楼

给LZ个函数调用的代码   这些题都是不难的 希望LZ多想想
#include <stdio.h>
int max(int x,int y);
int min(int m,int n);
int main(void)
{
    int a,b,max_1=0,min_1=0;
    printf("请输入两个正整数:");
    scanf("%d %d,",&a,&b);
    max_1=max(a,b);
    min_1=min(a,b);
    printf("最大公约数是%d\n最小公倍数是%d",max_1,min_1);
    return 0;
}
int I,J;
int max(int x,int y)
{
    int t,l=0;
    if(y>x)
    {
        t=x;
        x=y;
        y=t;
    }
    for(I=1;I<=y;I++)
        if((x%I==0)&&(y%I==0))
    l=I;
    return l;
}
int min(int m,int n)
{
    int t,p=0;
    if(n>m)
    {
        t=m;
        m=n;
        n=t;
    }
    for(J=m;J<=m*n;J++)
        if((J%m==0)&&(J%n==0))
        {
            p=J;
            break;
        }
        return p;
}
还有个普通的代码
#include <stdio.h>
int main(void)
{
    int m,n,i,j,t,max=0,min=0;
    printf("请输入任意两个正整数:");
    scanf("%d %d",&m,&n);
    if(m>n)
    {
        t=m;
        n=t;
        m=n;
    }
    for(i=1;i<=n;i++)
    {
        if((m%i==0)&&(n%i==0))
        max=i;
    }
    for(j=n;j<=n*m;j++)
    {
        if((j%m==0)&&(j%n==0))
        {
            min=j;
            break;
        }
    }
    printf("最大公约数是%d\n最小公倍数是%d",max,min);
    return 0;
}

9 楼

抄袭一段,原文: http://enjoy-math.equn.com/Math/number_theory.htm#最大公约数&最小公倍数
求a、b的最大公约数GCD: 

 1.质因数分解法:

    1, 对两数分别分解质因数;

    2, 找出共有的因数, 其乘积即是它们的最大公约数.

 2.辗转相除法:

    1, 若 a>b 执行<2>, 否则交换 a,b 执行<2>. 

    2, a <- a mod b

    3, 若a或b等于一, 则另一个数是它们的最大公约数.否则执行<1>. 

求a、b的最小公倍数LCM:

    最小公倍数=ab÷最大公约数

对于求n个数的最大公约数&最小公倍数, 需分别求出每两个数的最大公约数(最小公倍数)将结果作同样处理. 

10 楼

既然都写了~我也献丑了~
临时写的,但不知道对不对~
还望指正。。。。谢谢~
代码如下:
#include<stdio.h>
void main()

  int a,b,i,j,max,min;
  scanf("%d%d",&a,&b);
  for(i=a-1,j=b-1;i>0&&j>0;i--,j--)
     {
       if(a%i==0&&b%j==0)
          {
            if(i==j)
            max=i;
          }
  min=(a/max)*(b/max)*max;
printf("最大公约数是:/%d\n",max);
printf("最小公倍数是:/%d\n",min);
}

我来回复

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