C语言之函数调用07—求4个数的最大公约数和最小公倍数
来源:互联网 发布:淘宝商城魅族 编辑:程序博客网 时间:2024/05/17 18:47
//函数调用
/*
==========================================================
题目:求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变量
保存最新的公约数,直到最后一个公约数求完为之。则问题转化为始终求两个
数的公约数。
=====================================================================
*/
/*
==========================================================
题目:求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变量
保存最新的公约数,直到最后一个公约数求完为之。则问题转化为始终求两个
数的公约数。
=====================================================================
*/
0 0
- C语言之函数调用07—求4个数的最大公约数和最小公倍数
- C语言之函数调用08—暴力法求4个数的最大公约数和最小公倍数
- C语言之函数调用03—最大公约数和最小公倍数
- C语言进阶之路------函数调用之辗转相除法求两个数的最小公倍数和最大公约数
- C语言实现3个数的最小公倍数和最大公约数
- 求俩个数的最大公约数和最小公倍数
- 求2个数的最大公约数和最小公倍数
- 求多个数的最大公约数和最小公倍数
- 求多个数的最大公约数和最小公倍数
- 求最大公约数和最小公倍数---调用函数
- 调用函数求任意两个整数的最小公倍数和最大公约数
- JAVA调用函数,求两个数的最大公约数和最小公倍数。
- C语言-求最大公约数和最小公倍数
- C语言求最大公约数和最小公倍数算法
- C语言求最大公约数和最小公倍数
- 求最大公约数和最小公倍数-C语言
- c语言求最大公约数和最小公倍数
- c语言求最大公约数和最小公倍数
- SharedPreferences
- Amazon EMR ssh连接教程 (Mac OS)
- Unique Binary Search Trees II
- C#高级编程四十六天----正则表达式
- bailian.openjudge.cn2705
- C语言之函数调用07—求4个数的最大公约数和最小公倍数
- Android中的Interpolator
- xhtml div+css浮动
- JSP:JSP如何设置s:combobox action如何获取到JSP中s:combobox 的值
- 由多个电容组成的去耦旁路电路,电容怎么布局摆放,先大后小还是先小后大?
- 安装PL/SQL Developer
- UDP单播和广播的分析与实例
- Android的按钮单击事件及监听器的实现方式
- Eclipse创建Maven项目无法获取pom文件指定的jar包