为什么不能使用此代码来查找两个数字的 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=3n=4

LCM 是 12,要得到 12,您需要将两个数字乘以一个 不同的 数字。而您假设您需要将两个数字乘以相同的因子 c.

您可能已经通过非常简单的逐步调试找到了解决方案。您甚至可以在线为像您这样的基本代码执行此操作。

您的代码中还有其他问题,例如您使用的是有符号整数(您可能需要无符号整数)以及您没有关注整数溢出。