#include<iostream>
using namespace std;
//求两个整数的最大公倍数
int maxdivisor(int x, int y)
{
int t = 0 ;
while (t != 0)
{
t = x % y;
x = y;
y = t;
}//辗转相除法求最大公约数
return x;
}
int main()
{
cout << "请输入两个整数:" << '\n';
int m, n;
int t , i;//交换大小
cin >> m >> n;
t = m > n ? m : n;
i = m > n ? n : m;
m = t;
n = i;
int minmultiple;
minmultiple = m * n / maxdivisor(m, n);
cout << "m、n的最小公倍数为:" << minmultiple;
return 0;
![](https://profile-avatar.csdnimg.cn/1664fbf489504ecd9f35f6a2bc65d916_yahyah625.jpg!4)
c++求助 想问一下我写的辗转相除法的函数有什么问题,代码没报错但是循环跑不了?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 芣苢的成长之路 2023-06-27 10:42关注
求最大公约数的循环条件存在问题,导致循环无法执行。修正后的代码中,将辗转相除法的循环条件修改为y != 0,这样循环会一直执行,直到找到最大公约数。之前的循环条件t != 0导致循环无法执行,因为在进入循环之前,t的初始值为0,因此循环条件不满足,循环直接跳过。修正后的代码应该能够正确计算两个整数的最小公倍数。
#include <iostream> using namespace std; // 求两个整数的最大公约数 int maxdivisor(int x, int y) { int t = 0; while (y != 0) { t = x % y; x = y; y = t; } return x; } int main() { cout << "请输入两个整数:" << '\n'; int m, n; int t, i; // 交换大小 cin >> m >> n; t = m > n ? m : n; i = m > n ? n : m; m = t; n = i; int minmultiple; minmultiple = m * n / maxdivisor(m, n); cout << "m、n的最小公倍数为:" << minmultiple; return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 如图所示交换机网络该如何规划配置
- ¥15 CUDA driver error
- ¥15 Dijkstra 算法的堆优化方法
- ¥15 师哥师姐们,如何帮我下载一下python?
- ¥15 Office版本升级,Oracle连接报错
- ¥20 利用python搜索PDF文件中是否存在1
- ¥15 ImportPathMismatchError
- ¥15 滤波器这个效果是对的么
- ¥15 c++静态函数的静态函数参数问题
- ¥15 51单片机数码管显示有问题