题目
输入两个正整数m和n,求其最大公约数和最小公倍数。
实现的思路
- 接收用户输入的两个正整数m和n。
- 使用一个循环从m和n的乘积开始向下查找,找到能同时整除m和n的最大数,这个数就是最大公约数。
- 根据最大公约数计算最小公倍数,最小公倍数 = m * n / 最大公约数。
- 打印最大公约数和最小公倍数。
代码(包含解析)
#include <stdio.h>
int main(){
int x, y, i, g;
// 提示用户输入两个正整数
printf("请输入两个正整数(中间空格隔开):\n");
// 读取用户输入的两个正整数
scanf("%d %d", &x, &y);
// 从x和y的乘积开始向下查找最大公约数
for(i = x * y; i >= 2; i--) {
// 如果i能同时整除x和y,则i是最大公约数
if(x % i == 0 && y % i == 0) {
break;
}
}
// 根据最大公约数计算最小公倍数
g = x * y / i;
// 打印最大公约数和最小公倍数
printf("最小公约数是:%d 最大公倍数是:%d",i,g);
return 0;
}
代码解读
x
和y
用于存储用户输入的两个正整数。i
用于在循环中查找最大公约数。g
用于存储计算出的最小公倍数。scanf
函数用于读取用户输入的两个正整数。for
循环从x * y
开始递减,检查每个数是否能同时整除x
和y
。- 当找到能同时整除
x
和y
的数时,循环终止,这个数就是最大公约数。 - 最小公倍数通过
x * y / 最大公约数
计算得出。 - 最后,使用
printf
函数打印出最大公约数和最小公倍数。