黑马程序员技术交流社区

标题: 帮忙屡下思路,小学数学是偷学的 [打印本页]

作者: 李闯    时间: 2015-5-22 22:14
标题: 帮忙屡下思路,小学数学是偷学的
输入两个数,求最小公倍数和最大公约数
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)    {
        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;
}

作者: 小龙女的萝卜    时间: 2015-5-23 14:00
第一次评论,请多多指教。:)
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;
   
    // 将两个数排序,num1小,num2大
    if (num1 > num2)
    {
        int temp = num1;
        num1 = num2;
        num2 = temp;
    }
   
/*
  寻找最大公约数,(最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个)
  通过两个数中的最小数,for循环,依次找最大公约数,找到后跳出循环。
   
*/
    for (int i = num1; i > 0; i--) //
    {
        if (num1%i == 0 && num2%i == 0)  // nim1、num2同除以最小的num1,若整除,则为最大公约数;
            
            gcd = i; // 将最大公约数赋值给gcd.
            
            break; // 找打最大公约数,跳出循环
        }
    }
    lcm = product/gcd; // 两个数的积除以这两个数的最大公约数,等于最小公倍数
    // 按要求打印
    printf("gcd = %d\n", gcd);
    printf("lcm = %d\n", lcm);
    return 0;
}
作者: 李闯    时间: 2015-5-24 11:11
小龙女的萝卜 发表于 2015-5-23 14:00
第一次评论,请多多指教。
int main(int argc, const char * argv[])
{

谢谢 ,很详细
作者: x331275955    时间: 2015-5-24 17:51
公约数,公倍数什么都忘了,原来他俩还有倍数关系呢....受教了.
作者: aSmallStone    时间: 2015-5-24 21:51
越基础的越容易忘记。。。。




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