2175. 【一命通关】之函数

1000ms 512MB 简单 一命通关系列
题目描述

欢迎来到"一命通关"系列第六关!本关考验你封装逻辑、编写函数的能力。

请根据要求实现以下五个函数,并在 main 函数中调用它们完成指定任务:

任务1:判断素数
编写函数 bool isPrime(int n)。如果 n 是素数返回 true,否则返回 false
输入一个整数,输出 "Yes" 或 "No"。

任务2:求最大公约数 (GCD)
编写函数 int gcd(int a, int b)。使用辗转相除法(欧几里得算法)计算两个数的最大公约数。
输入两个整数,输出它们的 GCD。

任务3:交换变量值
编写函数 void swapValues(int &a, int &b)注意使用引用传递,在函数内部交换两个变量的值。
输入两个整数,输出交换后的结果。

任务4:十进制转二进制
编写函数 string toBinary(int n)。将非负整数转换为二进制字符串并返回。
输入一个非负整数,输出其二进制表示。

任务5:递归求阶乘
编写函数 long long factorial(int n)。使用递归方式计算 n!。
输入一个正整数 n (n ≤ 20),输出其阶乘结果。

输入格式

共五行输入,分别对应五个任务的测试数据:

  1. 第一行:一个整数 n1(用于任务1)。
  2. 第二行:两个整数 a, b(用于任务2)。
  3. 第三行:两个整数 x, y(用于任务3)。
  4. 第四行:一个非负整数 m(用于任务4)。
  5. 第五行:一个正整数 k(用于任务5)。
输出格式

按照任务顺序输出五行结果:

  1. "Yes" 或 "No"
  2. 最大公约数
  3. 交换后的两个数(空格分隔)
  4. 二进制字符串
  5. 阶乘结果
样例 1
输入 (Input)
7
12 18
10 20
10
5
输出 (Output)
Yes
6
20 10
1010
120
  • 素数判断:只需遍历到 √n 即可。注意处理 n < 2 的情况。
  • 引用传递:在函数参数类型后加 &(如 int &a),这样函数内对参数的修改会直接影响外部变量。
  • 二进制转换:可以使用"除2取余法",将余数存入字符串或数组,最后反转。
  • 递归终止条件:阶乘的递归基准情况是 if (n == 0 || n == 1) return 1;
  • 数据类型:阶乘增长很快,20! 已经接近 long long 的上限,务必使用 long long
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字