编写一个函数,计算并返回正整数m和n的最大公约数和最小公倍数?

如题所述

最小公倍数
几个数公有的倍数叫做这几个数的公倍数,其中最小的一个叫做这几个数的最小公倍数。
.
最大公约数
拼音:zuì dà gōng yuē shù
英语:greatest common divisor

最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个。

例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。

两个整数的最大公约数主要有两种寻找方法:

* 两数各分解质因子,然后取出同样有的项乘起来
* 辗转相除法(扩展版)

和最小公倍数(lcm)的关系:gcd(a, b)×lcm(a, b) = ab

两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。

两个整数的最大公因子和最小公倍数中存在分配律:

* gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c))
* lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a, c))

在座标里,将点(0, 0)和(a, b)连起来,通过整数座标的点的数目(除了(0, 0)一点之外)就是gcd(a, b)。

参考资料:最小公倍数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-19
main()
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1 { temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("gongyueshu:%d\n",a);
printf("gongbeishu:%d\n",num1*num2/a);
}
第2个回答  2010-04-19
/* 利用辗转相除法求最大公约数 */
int gcd(int n, int m)
{
int r;
while(r = n % m) { /* 余数为0 */
n = m;
m = r;
}
return m; /* n % m == 0 所以返回 m */
}本回答被网友采纳
第3个回答  2010-04-19
#include <stdio.h>
int max(int x,int y) //求最大公约数
{
int t;
t=x<y?x:y;
for(;;t--)
if(x%t==0&&y%t==0) break;
return t;
}

int min(int a,int b) //最小公倍数
{
int f;
f=a>b?a:b;
for (;;f++)
if(f%a==0&&f%b==0) break;
return f;
}

void main()
{
int m,n,w,c;
scanf("%d %d",&m,&n);
w=max(m,n);
c=min(m,n);
printf("%d\n%d\n",w,c);
}
相似回答