黑马程序员技术交流社区

标题: 这道题不少太明白,求大神指教!!! [打印本页]

作者: 沐浴阳光@    时间: 2015-4-14 00:12
标题: 这道题不少太明白,求大神指教!!!
输入两个数,求最小公倍数和最大公约数

int main(int argc, const char * argv[])
{
    int num1 = 0;
    int num2 = 0;
    int gcd = 0; //最大公约数
    int lcm = 0; //最小公倍数
    printf("请输入两个数:\n");
    scanf("%d%d", &num1, &num2);
    int product = num1*num2;
   
    if (num1 > num2)//始终让num1是最小数。
    {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }
   
    for (int i = num1; i > 0; i--) {
        if (num1%i == 0 && num2%i == 0) {
            gcd = i;
            break;
        }
    }
    lcm = product/gcd;
    printf("gcd = %d\n", gcd);
    printf("lcm = %d\n", lcm);
    return 0;
}

作者: 37°天黑    时间: 2015-4-14 21:37
同求!求大神解答!
作者: sunyang    时间: 2015-4-14 23:20
  1. <script src="https://gist.github.com/sunocean/dcfe3d4c36f4874099a8.js"></script>
复制代码

作者: 桑小龙    时间: 2015-4-14 23:21
。。。。。。考试题吗
作者: sunyang    时间: 2015-4-14 23:21
我去这个论坛的插入代码真的是插入代码啊,囧
  1. //输入两个数,求最小公倍数和最大公约数
  2. #include<stdio.h>
  3. int main(int argc, const char * argv[])
  4. {
  5.     int num1 = 0;
  6.     int num2 = 0;
  7.     int gcd = 0; //最大公约数
  8.     int lcm = 0; //最小公倍数
  9.     printf("请输入两个数:\n");
  10.     scanf("%d%d", &num1, &num2);
  11.     int product = num1*num2;
  12.    
  13.     if (num1 > num2)//始终让num1是最小数。
  14.     {
  15.         int temp = num1;
  16.         num1 = num2;
  17.         num2 = temp;
  18.     }
  19.    
  20.     for (int i = num1; i > 0; i--) //从num1开始循环减少直到寻找到最大公约数
  21.     {
  22.         if (num1%i == 0 && num2%i == 0) //能同时被 num1和 num2除尽的即为公约数
  23.         {
  24.             gcd = i;
  25.             break;//找到最大公约数后跳出循环
  26.         }
  27.     }
  28.     lcm = product/gcd;// 最大公约数和最小公倍数的关系 为 最大公约数 x 最小公倍数 = 两数相乘。
  29.     printf("gcd = %d\n", gcd);
  30.     printf("lcm = %d\n", lcm);
  31.     return 0;
  32. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2