编写该程序的整体思路:分别定义最大公约数函数和最小公倍数函数,然后再main函数里面调用它。C语言实现代码如下:
专注于为中小企业提供网站设计制作、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业赤壁免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
#includestdio.h
#includemath.h
int fun_gy(int,int); //声明最大公约数函数
int fun_gb(int,int); //声明最小公倍数函数
main()
{
int a,b,gy,gb;
printf("输入两个整数:\n");
scanf("%d%d",a,b);
gy=fun_gy(a,b); //调用最大公约数函数
gb=fun_gb(a,b); //调用最小公倍数函数
printf("最大公约数是:%d\n最小公倍数是:%d\n",gy,gb);
}
int fun_gy(int x,int y)
{
int z,i;
if(xy)
z=sqrt(y);
else
z=sqrt(x);
for(i=z;i=1;i--)
{
if(x%i==0y%i==0)
break;
}
return i;
}
int fun_gb(int x,int y)
{
int z,i;
z=x*y;
for(i=x;i=z;i++)
{
if(i%x==0i%y==0)
break;
}
return i;
}
程序运行结果:
扩展资料:
这里涉及到了最大公约数和最小公倍数的计算方法:
我们知道两个整数的最小公倍数等于他们的乘积除以他们的最大公约数。所以关键还是最大公约数的计算。
辗转相除法(求最大公约数):
假设求a,b的最大公约数,则:
(1)a除以b取余得c,若c=0,则b即为两数的最大公约数,输出,结束。
(2)若c != 0,则将b赋给a,c赋给b再返回上一步操作,继续执行。
例如,求30和98的最大公约数,过程如下:
90%30 = 8;
30%8 = 6;
8%6 = 2;
6%2 = 0;
所以最大公约数为2。
最大公约数:枚举法,辗转相除法;最小公倍数:两数乘积除以最大公约数即可。
#includestdio.h
#includemath.h
int fun_gy(int,int); //声明最大公约数函数
int fun_gb(int,int); //声明最小公倍数函数
main()
{
int a,b,gy,gb;
printf("输入两个整数:\n");
scanf("%d%d",a,b);
gy=fun_gy(a,b); //调用最大公约数函数
gb=fun_gb(a,b); //调用最小公倍数函数
printf("最大公约数是:%d\n最小公倍数是:%d\n",gy,gb);
if(x%i==0y%i==0)
break;
两个整数的最大公约数
* 两数各分解质因数,然后取出同样有的质因数乘起来
*辗转相除法(扩展版)
和最小公倍数(lcm)的关系:
gcd(a, b) * lcm(a, b) = ab
a与b有最大公约数,
两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。
两个整数的最大公因子和最小公倍数中存在分配律:
* 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)。
以上内容参考:百度百科-最大公约数
#include stdio.h
/* 函数声明 */
int common_multiple (int number1, int number2);
int main ()
{
int multiple, number1 = 24, number2 = 16;
multiple = common_multiple(number1, number2);
printf("%d", multiple);
return 0;
}/* 请在此处完成你的程序 */
int common_multiple (int number1, int number2)
{
int r,t;
r=number1%number2;
t=number1*number2;
while(r!=0)
{
number1=number2;
number2=r;
r=number1%number2;
}
t=t/number2;
return t;
}
/*最小公倍数,和最小公约数求法*/
/* r=a%b;
int n=a*b;
while(r!=0)/*r不等于0就执行循环体//辗转相除法
有两整数a和b:
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行①
{
a=b;
b=r;
r=a%b;
}
printf("%d,%d\n",b,n/b);//两个数的积除以最大公约数就是最小公倍数*/