求C语言程序:求两个整数的最大公约数和最小公倍数。

用一个函数求最大公约数,用另一个函数根据求出的最大公约数求最小公倍数。
要用函数表达,谢了

#include <stdio.h>
int fun(int m,int n)/*求最大公约数*/
{
int t;
if(n>m)
{
t=n;
n=m;
m=t;
}
t=m%n;
while(t)
{
m=n;
n=t;
t=m%n;
}
return n;
}
void main()
{
int m,n,gcd,lcm;/*gcd是最大公约数,lcm是最小公倍数*/
printf ("Input two integer m,n:");
scanf("%d%d",&m,&n);
gcd=fun(m,n);
lcm=m*n/gcd;/*求最小公倍数*/
printf("gcd=%d\n",gcd);
printf("lcm=%d\n",lcm);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-29
#include <stdio.h>
void main()
{
int m,n,r,t;
printf ("请输入两个正整数m,n:");
scanf("%d%d",&m,&n);
if(n>m)
{
t=n;
n=m;
m=t;
}
r=m*n;
t=m%n;
while(t)
{
m=n;
n=t;
t=m%n;
}
printf("他们的最大公约数:%d \n",n);
printf("他们的最小公倍数:%d \n",r/n);
}
第2个回答  2011-05-02
用欧几里德辗转相除法:
#include <stdio.h>

int dy(int a, int b) //公约数
{
return (!b)? a : dy(b, a % b);
}

int db(int a, int b) //公倍数
{
return a * b / dy(a, b);
}

void main()
{
int a, b;

scanf("%d %d", &a, &b);
printf("最大公约数:%d\n最大公倍数%d\n", dy(a, b), db(a, b));
}本回答被网友采纳
第3个回答  2011-04-27
#include<stdio.h>
int main()
{
int m,n,t,i;
scanf("%d%d",&m,&n);
if(m>n)
{
t=n;
n=m;
m=t;
}
for(i=m;i>=2;i--)
if(m%i==0&&n%i==0)
printf("%d,%d\n",i,m*n/i);
return 0;
}本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网