编写一个函数,在主函数从键盘输入两个正整数,调用该函数求取这两个数的最小公倍数。
#include <stdio.h>
int lcm (int a,int b)
{
int i=1,last=1,min=1,z;
if(a<b)
min = a;
else
min = b;
while(i<=min) {
if(a%i==0 && b%i==0)
last = i;
i++;
}
return z=a*b/last;
}
int main(void)
{
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", lcm(a, b));
return 0;
}
此例子采用短除法进行。
用公因子来相除。
#include <stdio.h>
int main()
{
int m, n;int i = 2;
int j, k;
int lcm, gcd = 1;
scanf("%d %d", &m, &n); //输入m和n
j = m, k = n; //用j和k表示m和n,不破坏m与n的值
if (j > k)
{
j = n, k = m; //确保j是较小的那个
}
for (; i <= n; i++) //循环寻找从i到j的因子
{
if (j % i == 0 && k % i == 0) //判断i是否为j和k的公因子
{
j /= i;
k /= i; //j与k分别除以i
gcd *= i; //gcd乘以i
}
}
lcm = gcd * j * k; //求出最小公倍数lcm
printf("%d", lcm); //输出gcd与lcm
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)