你这里的判断条件 b 也没有变过啊, 一直死循环
因为while循环里,把第16行 a=c这个错了,改为b=c就可以了。
修改如下:
参考链接:
#include <stdio.h>
int main(void){
int a=0;
int b=0;
int r=0;
scanf("%d %d",&a,&b);
int t=a*b;
if(a<b){
r=a;
a=b;
b=r;
}
// https://blog.csdn.net/weixin_46569912/article/details/113195340
while(b!=0){
int c=a%b;
a=b;
b=c; // 把a=c改为b=c就可以了。
}
int m=t/a;
printf("%d", m);
return 0;
}
ei-tracking-car源码链接:
博主也是第一次做车,第一次参赛,所以在代码编写和算法理解上还有些生疏,如果那里有错误,欢迎大家指正。
针对求两数最小公倍数的问题,需要先了解什么是最小公倍数以及如何计算最小公倍数。
最小公倍数:是指两个或多个整数公有的倍数中,除0以外最小的一个。如6和8的倍数有:6、8、12、16、18、24、……其中6和8公共倍数最小为24,则6和8的最小公倍数为24。
计算最小公倍数:有多种方法可以计算最小公倍数,其中较为通用的是使用两数的乘积除以它们的最大公约数。即:LCM(a,b) = a*b/GCD(a,b)
以下是针对该问题的解决方案:
Step 1: 定义函数,传入两个整数,函数返回它们的最大公约数(使用辗转相除法)。代码如下:
int gcd(int a, int b)
{
int temp;
while(b != 0)
{
temp = a % b;
a = b;
b = temp;
}
return a;
}
Step 2: 定义函数,传入两个整数,函数返回它们的最小公倍数(使用公式LCM(a,b) = a*b/GCD(a,b))。代码如下:
int lcm(int a, int b)
{
return a*b/gcd(a,b);
}
Step 3: 在main函数中调用上述函数,针对用户输入的两个数进行操作并输出结果。代码如下:
int main()
{
int num1, num2, result;
printf("Enter two integers:\n");
scanf("%d%d", &num1, &num2);
result = lcm(num1, num2);
printf("The LCM of %d and %d is %d\n", num1, num2, result);
return 0;
}
完整代码如下:
#include <stdio.h>
int gcd(int a, int b)
{
int temp;
while(b != 0)
{
temp = a % b;
a = b;
b = temp;
}
return a;
}
int lcm(int a, int b)
{
return a*b/gcd(a,b);
}
int main()
{
int num1, num2, result;
printf("Enter two integers:\n");
scanf("%d%d", &num1, &num2);
result = lcm(num1, num2);
printf("The LCM of %d and %d is %d\n", num1, num2, result);
return 0;
}
以上就是针对求两数最小公倍数的解决方案。