A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

输入两个数,求最小公倍数和最大公约数
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;
}

评分

参与人数 2黑马币 +3 收起 理由
等风继续吹 + 2
小龙女的萝卜 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
第一次评论,请多多指教。:)
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-23 14:00
第一次评论,请多多指教。
int main(int argc, const char * argv[])
{

谢谢 ,很详细
回复 使用道具 举报
公约数,公倍数什么都忘了,原来他俩还有倍数关系呢....受教了.
回复 使用道具 举报
越基础的越容易忘记。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马