您的位置:首页 > 其它

习题 7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

2017-09-11 12:04 585 查看

C程序设计(第四版) 谭浩强 习题7.1 个人设计

习题 7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

代码块:

方法1:

#include <stdio.h>
int HCF(int x, int y);                            //定义最大公约数函数
int LCM(int p, int q);                            //定义最小公倍数函数
int main()
{
int a, b, hcf, lcm;
scanf("%d %d", &a, &b);                       //输入两个整数
hcf = HCF(a, b);                              //调用最大公约数函数
lcm = LCM(a, b);                              //调用最小公倍数函数
printf("HCF is %d  LCM is %d\n", hcf, lcm);   //输出最大公约数和最小公倍数
return 0;
}
int sum;                                          //定义外部变量sum
//最大公约数函数
int HCF(int x, int y)
{
int i, k, m, n;
sum = 1;
k = x > y ? y : x;
i = 2;
while (i <= k){
m = x % i;
n = y % i;
if (m == 0 && n == 0){
sum *= i;
x /= i;
y /= i;
i = 2;
}
else
i++;
}
return sum;
}
extern sum;                                       //引用外部变量sum
//最小公倍数函数
int LCM(int p, int q)
{
int lc;
lc = p * q / sum;
return lc;
}


方法2:

#include <stdio.h>
int HCF(int x, int y);                                //定义最大公约数函数
int LCM(int x, int y);                                //定义最小公倍数函数
int main()
{
int a, b;
printf("Please enter 2 numbers: ");               //输入两个整数
scanf("%d %d", &a, &b);
printf("HCF=%d, LCM=%d\n", HCF(a, b), LCM(a, b)); //输出最大公约数和最小公倍数
return 0;
}
//最大公约数函数(利用欧几里得算法)
int HCF(int x, int y)
{
for (int z=x%y; z!=0; x=y, y=z, z=x%y);
return y;
}
//最小公倍数函数
int LCM(int x, int y)
{
return (x*y)/HCF(x, y);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐