习题7.7

来源:互联网 发布:企业海关数据免费查询 编辑:程序博客网 时间:2024/06/05 02:21
/*分别使用穷举法、欧几里得算法、递归方法编程计算并输出从键盘输入的两个正整数的最大公约数,最后输出两个正整数的最小公倍数。*/#include "stdio.h" #include "stdlib.h" //采用穷举法计算最大公约数int exhaustion(int a, int b)     {     int t = a;     if(b<a)         t = b;     for(; t>0; t--)     {         if(a%t==0 && b%t==0)             break;     }     return t; }   //采用欧几里得算法求最大公约数 int Euclid(int a, int b)  {     int t;     while(b!=0)     {         t = b;         b = a % b;         a = t;     }     return a; }  //采用递归算法求最大公约数int rec_gcd(int a, int b)   {     return b==0 ? a : rec_gcd(b, a%b); }   //求两个数的最小公倍数 int lcm_fun(int a, int b, int gcd) {     int t = a * b / gcd;     return t; } int main() {     int x, y;     int gcd, lcm;     printf("请从键盘输入两个数:\n");     scanf("%d %d", &x, &y);     gcd = exhaustion(x, y);     printf("穷举法计算的最大公约数为:%d\n", gcd);     gcd = Euclid(x, y);     printf("欧几里德算法计算的最大公约数为:%d\n", gcd);     gcd = rec_gcd(x, y);     printf("递归算法计算的最大公约数为:%d\n", gcd);     lcm = lcm_fun(x, y, gcd);     printf("两数的最小公倍数为:%d\n", lcm);     return 0; }  

运行结果:
这里写图片描述

原创粉丝点击