为什么不能使用此代码来查找两个数字的 lcm?
why can't this code be used to find the lcm of two numbers?
这是我写的代码。请告诉我我可能有的错误和知识差距
#include <stdio.h>
int main()
{
int i,n,c=1;
printf("enter the number 1:");
scanf("%d",&i);
printf("enter the second number:");
scanf("%d",&n);
while (i!=n)
{
c++;
i=i*c;
n=n*c;
}
printf("the lcm is %d",i);
return 0;
}
我输入的输入:2 & 3
我得到的输出:lcm为0
预期输出:lcm 为 6
你的算法完全错误。
举个基本的例子i=3
和n=4
。
LCM 是 12,要得到 12,您需要将两个数字乘以一个 不同的 数字。而您假设您需要将两个数字乘以相同的因子 c
.
您可能已经通过非常简单的逐步调试找到了解决方案。您甚至可以在线为像您这样的基本代码执行此操作。
您的代码中还有其他问题,例如您使用的是有符号整数(您可能需要无符号整数)以及您没有关注整数溢出。
这是我写的代码。请告诉我我可能有的错误和知识差距
#include <stdio.h>
int main()
{
int i,n,c=1;
printf("enter the number 1:");
scanf("%d",&i);
printf("enter the second number:");
scanf("%d",&n);
while (i!=n)
{
c++;
i=i*c;
n=n*c;
}
printf("the lcm is %d",i);
return 0;
}
我输入的输入:2 & 3
我得到的输出:lcm为0
预期输出:lcm 为 6
你的算法完全错误。
举个基本的例子i=3
和n=4
。
LCM 是 12,要得到 12,您需要将两个数字乘以一个 不同的 数字。而您假设您需要将两个数字乘以相同的因子 c
.
您可能已经通过非常简单的逐步调试找到了解决方案。您甚至可以在线为像您这样的基本代码执行此操作。
您的代码中还有其他问题,例如您使用的是有符号整数(您可能需要无符号整数)以及您没有关注整数溢出。