要写一个求mn两个整数最小公倍数的程序,最后运行没反应
#include
void main()
{
int m,n,a,r;
//int b;
r = 1;
scanf_s("%d %d", &m, &n);
//if (m < n)
//{
// m = b;
// b= n;
// n = m;
//}
if (m / n != r)
a = m * n;
while (a = m * n / (m / n));
printf("%d", a);
}
while语句要干啥呢???加入要while结束,那a一定是0
但显然while条件中只是一个赋值语句,a如果不为0,就是个死循环,自然没有输出
你的代码完全看不懂在干啥
参考这个案例:
#include <stdio.h>
// 求最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
// 求最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int m, n;
printf("请输入两个整数:");
scanf("%d %d", &m, &n);
printf("%d和%d的最小公倍数为:%d", m, n, lcm(m, n));
return 0;
}
该回答引用ChatGPT
你的程序中有几个语法错误和逻辑错误,可能导致无法正确输出最小公倍数。
下面是修正后的程序,包括以下修改:
1.将void main()改为int main(),以便在程序结束时返回一个整数值。
2.将if (m / n != r)改为if (m % n != 0),以检查m是否是n的倍数。
3.将while (a = m * n / (m / n));改为while (m % n != 0),以检查是否需要进行下一次循环。
4.将printf("%d", a);放在while循环之外,以便在找到最小公倍数后输出结果。
5.删除了一些被注释掉的代码,以保持程序简洁和易读。
下面是修改后的程序:
#include <stdio.h>
int main()
{
int m, n, a, r;
r = 1;
scanf("%d %d", &m, &n);
if (m % n != 0)
a = m * n;
while (m % n != 0)
{
a = m * n / (m / n);
m = n;
n = a;
}
printf("%d", a);
return 0;
}
这个程序应该能够正确输出给定两个整数的最小公倍数。
搜一搜:辗转相除法
你这while里啥都不写是要干啥呢,死循环吗