头歌C语言实训C++之for循环性质(II)

最大公约数(英语:Greatest Common Divisor,简写为G.C.D.;或Highest Common Factor,简写为H.C.F.)是指某几个整数共有约数中最大的一个。如1218的最大公约数为6

最小公倍数(英语:Lowest Common Multiple,简写为L.C.M.)是数论中的一个概念。若有一个数X,可以被另外两个数AB整除,且X大于(或等于)AB,则XAB的公倍数。AB的公倍数有无限个,而所有的公倍数中,最小的公倍数就叫做最小公倍数。如1218的最小公倍数为36

本关要求用for循环语句来分别求两个正整数的最大公约数和最小公倍数。

本关任务

本关的编程任务是实现step4/GcdAndLcm.cpp文件中的GcdLcm函数,代码如下:

 
  1. // 求两个正整数的最大公约数
  2. int Gcd(int a,int b)
  3. {
  4. // 请在此提供实现代码
  5. }
  6. // 求两个正整数的最小公倍数
  7. int Lcm(int a,int b)
  8. {
  9. // 请在此提供实现代码
  10. }

测试说明

本关的测试文件是step4/GcdAndLcmTest.cpp,负责对你写的实现代码进行测试。具体说明如下:

 
  1. #include <iostream>
  2. #include "GcdAndLcm.h"
  3. using namespace std;
  4. int main()
  5. {
  6. int m,n;
  7. // 从命令行读入两个正整数
  8. // 这两个数取自测试集的输入
  9. cin >> m >> n;
  10. cout << Gcd(m,n) << " " << Lcm(m,n) << endl;
  11. }

上述main函数从命令行读入,并将处理后的结果通过命令行输出。注意,step4/GcdAndLcmTest.cpp的代码不能被修改。

其中:GcdAndLcm.h文件代码如下:

 
  1. #ifndef _ISLEAPYEAR_H_
  2. #define _ISLEAPYEAR_H_
  3. int Gcd(int ,int );
  4. int Lcm(int ,int );
  5. #endif

以下是平台对step4/GcdAndLcmTest.cpp的测试样例:
测试输入:5 10
预期输出:5 10

测试输入:6 9
预期输出:3 18

测试输入:7 11
预期输出:11 77

 

int Gcd(int a,int b)
{  
    int i,j,k;
    if(a >= b)  
        j = a;  
    else  
        j = b;
    for(i = j; i >= 1; i--)  
    {  
        if(a % i == 0 && b % i == 0)  
        {  
            k = i;  
            break;  
        }  
    }  
    return k;  
}
int Lcm(int a,int b)  
{  
    int o,p,q;
    if(a >= b)  
        p = b;  
    else  
        p = a;
    for(o = p; o >= 1; o--)  
    {  
        if(a % o == 0 && b % o == 0)  
        {  
            q = o;  
            break;  
        }  
    }  
    return (a * b) / q;  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值