码迷,mamicode.com
首页 > 编程语言 > 详细

C语言之函数调用07—求4个数的最大公约数和最小公倍数

时间:2015-07-22 01:39:20      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:c语言   函数调用   四个数的最大公约数和最小公倍数   

//函数调用
/*
==========================================================
题目:求4个数的最大公约数和最小公倍数。
==========================================================
*/
#include<stdio.h>
long gys(long m,long n)
{
int t,r;
if(m<n)
{t=m;m=n;n=t;}
while((r=m%n)!=0)
{
m=n;n=r;
}
return (n);
}
long gys(long a,long b,long c)
{
long q;
q=gys(gys(a,b),c);
return(q);
}
long gys(long a,long b, long c,long d)
{
long q;
q=gys(gys(a,b,c),d);
return (q);
}
long gbs(long a,long b)
{
return a*b/gys(a,b);
}
long gbs(long a,long b,long c)
{
return gbs(a,b)*c/gys(gbs(a,b),c);
}
long gbs(long a,long b,long c,long d)
{
return gbs(a,b,c)*d/gys(gbs(a,b,c),d);
}
void main()
{
long a,b,c,d;
long gyshu,gbshu;
printf("输入四个数:");
scanf("%ld%ld%ld%ld",&a,&b,&c,&d);
gyshu=gys(a,b,c,d);
gbshu=gbs(a,b,c,d);
printf("%ld、%ld、%ld、%ld 的最大公约数是:%ld\n",a,b,c,d,gyshu);
printf("%ld、%ld、%ld、%ld 的最小公倍数是:%ld\n",a,b,c,d,gbshu);
}


/*
====================================================================
评:
要点在于重复调用!始终把计算结果作为一个数,就实现了先计算两个数a,b,
将gys(a,b)或gbs(a,b)作为一个数与c重新调用函数“gys”或“gbs”,同理,
将gys(a,b,c)或gbs(a,b,c)作为一个数与重新调用函数“gys”或“gbs”,
甚至可以实现更多数字的公约数和公倍数!如果数字比较多,而且大,就需要
改为double型!
缺点:显然这种方法写程序虽然直观但是很慢!读者可以试着用一个temp变量
保存最新的公约数,直到最后一个公约数求完为之。则问题转化为始终求两个
数的公约数。
=====================================================================
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

C语言之函数调用07—求4个数的最大公约数和最小公倍数

标签:c语言   函数调用   四个数的最大公约数和最小公倍数   

原文地址:http://blog.csdn.net/lzx19901012/article/details/46995361

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!