假设函数 gcd() 能正确求两个正整数的最大公约数,则下面的 findMusicalPattern(4, 6) 函数返回 2。
void findMusicalPattern(int rhythm1, int rhythm2) {
int commonDivisor = gcd(rhythm1, rhythm2);
int patternLength = (rhythm1 * rhythm2) / commonDivisor;
return patternLength;
}辗转相除法求最大公约数:gcd(a,b) = gcd(b, a%b),当b=0时返回a。时间复杂度O(log min(a,b))。
审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。
【考点】最小公倍数计算|函数语义理解|数论基础
本题考查《GESP 五级大纲》“数论基础”模块,命题人把“最大公约数”和“最小公倍数”这两个相邻但不同的概念揉在一起,专门卡住那些只会背公式、不懂数学本质的考生——这是五级卷的典型特征:用正确的公式配错误的语义。