模拟卷三数论阅读与完善程序

阅读程序,回答问题(lcm 与 gcd)。

阅读与完善程序 阅读3 · CSP-S 提高级 初赛 模拟试卷(三)
#include <iostream>
using namespace std;
int lcm(int a, int b) {
    int x = a, y = b;
    while (y) { int t = x % y; x = y; y = t; }
    return a * b / x;
}
int main() {
    cout << lcm(12, 18) << endl;
    return 0;
}
  • (1) 程序输出结果是______。(4 分)
  • (2) 函数中被 while 循环求出的 x 最终值代表什么?该算法名称是______。(5 分)
  • (3) 若调用 lcm(0, 5),程序会出现什么问题?______。(5 分)
答案解析
(1)gcd(12,18)=6,lcm=12×18/6=36。(2)x 最终值为最大公约数(gcd),算法为欧几里得算法(辗转相除法)。(3)若两参数同时为 0 则 x=0 后 a*b/x=0/0 产生除零错误/未定义行为(单参数为 0 时 lcm=0)。

同知识点练习

本题收录于「CSP-S 提高级 初赛 模拟试卷(三)」,共 25 道题,全部提供答案与解析。可进入在线练习系统按知识点随机组卷、自动批改并归集错题。

进入在线练习 查看完整试卷 本类全部题目