最大公约数(英语:Greatest Common Divisor,简写为G.C.D.;或Highest Common Factor,简写为H.C.F.)是指某几个整数共有约数中最大的一个。如12和18的最大公约数为6
最小公倍数(英语:Lowest Common Multiple,简写为L.C.M.)是数论中的一个概念。若有一个数X,可以被另外两个数A、B整除,且X大于(或等于)A和B,则X为A和B的公倍数。A和B的公倍数有无限个,而所有的公倍数中,最小的公倍数就叫做最小公倍数。如12和18的最小公倍数为36。
本关要求用for循环语句来分别求两个正整数的最大公约数和最小公倍数。
本关任务
本关的编程任务是实现step4/GcdAndLcm.cpp文件中的Gcd和Lcm函数,代码如下:
// 求两个正整数的最大公约数int Gcd(int a,int b){// 请在此提供实现代码}// 求两个正整数的最小公倍数int Lcm(int a,int b){// 请在此提供实现代码}
测试说明
本关的测试文件是step4/GcdAndLcmTest.cpp,负责对你写的实现代码进行测试。具体说明如下:
#include <iostream>#include "GcdAndLcm.h"using namespace std;int main(){int m,n;// 从命令行读入两个正整数// 这两个数取自测试集的输入cin >> m >> n;cout << Gcd(m,n) << " " << Lcm(m,n) << endl;}
上述main函数从命令行读入,并将处理后的结果通过命令行输出。注意,step4/GcdAndLcmTest.cpp的代码不能被修改。
其中:GcdAndLcm.h文件代码如下:
#ifndef _ISLEAPYEAR_H_#define _ISLEAPYEAR_H_int Gcd(int ,int );int Lcm(int ,int );#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;
}
本篇博客介绍了如何利用for循环来实现两个正整数的最大公约数(GCD)和最小公倍数(LCM)的计算。提供了具体的C++代码实现,包括Gcd和Lcm函数。并通过测试样例展示了不同输入下的预期输出,如(510, 510)的GCD和LCM分别为510,(69, 9)的GCD为3,LCM为189,(711, 117)的GCD为3,LCM为2373。测试文件GcdAndLcmTest.cpp用于验证函数的正确性。

被折叠的 条评论
为什么被折叠?



