• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

编写一个函数,在主函数从键盘输入两个正整数,调用该函数求取这两个数的最小公倍数。

#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;
}

 

 此例子采用短除法进行。

用公因子来相除。

20200421113208150.jpg

 

#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;
}

posted on 2022-04-12 20:03  王陈锋  阅读(362)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3