计算最小公倍数LCM

标签: 最大公约数 最小公倍数 gcd lcm
2025人阅读 评论(0) 收藏 举报
分类:

Lowest Common Multiple(LCM)
这是数论算法中的基础算法程序。

基于非递归的欧几里得算法(计算最大公约数GCD算法)来求解最小公倍数。

/*
 * 计算最小公倍数(Lowest Common Multiple,LCM)
 * 需要用到计算最大公约数的函数
 *
 * 两个数的乘积等于这两个数的最大公约数与最小公倍数的积。
 * 即(a, b)×[a, b]=a×b。
 * (a, b)表示a和b的最大公约数,[a, b]表示a和b的最小公倍数。
 *
 */

#include <stdio.h>

long gcd(long m, long n)
{
    for(;;) {
        if(n == 0)
            return m;
        long temp = m % n;
        m = n;
        n = temp;
    }
}

long lcm(long a, long b)
{
//    return a * b / gcd(a, b);
   return a / gcd(a, b) * b;

}

int main(void)
{
    printf("a=%d, b=%d, lcm=%ld\n", 18, 20, lcm(18, 20)); 
    printf("a=%d, b=%d, lcm=%ld\n", 15, 90, lcm(15, 90));
    return 0;
}

关键代码:

long gcd(long m, long n)  
{  
    for(;;) {  
        if(n == 0)  
            return m;  
        long temp = m % n;  
        m = n;  
        n = temp;  
    }  
}  
  
long lcm(long a, long b)  
{  
//    return a * b / gcd(a, b);  
   return a / gcd(a, b) * b;  
  
}  


查看评论

java语言求最小公倍数和最大公约数的三种算法

import java.util.Scanner; public class Muitipie { public static void main(String[] args) { Scan...
  • shaobing_
  • shaobing_
  • 2017-01-16 22:04:30
  • 6009

数学算法:求多个数的最小公倍数

解体心得: 1、一开始我的算法是找出最大的那个数,再将那个数一倍一倍的相加,但是会超时,因为题目的限制是32bits。(过于天真) 2、运用小学奥数的算法,多个数的最小公倍数,先将两个数的最小公倍...
  • yopilipala
  • yopilipala
  • 2017-03-25 10:16:30
  • 2831

算法训练 5-1最小公倍数

问题描述   编写一函数lcm,求两个正整数的最小公倍数。 样例输入 一个满足题目要求的输入范例。 例: 3 5 样例输出 与上面的样例输入对应的输出。 例: ...
  • lovely_girl1126
  • lovely_girl1126
  • 2017-01-31 17:41:44
  • 689

最大公约数和最小公倍数算法

先用辗转相除法求出最大公约数,然后再利用(最小公倍数=两数乘积/最大公约数)求得最小公倍数。辗转相除算法: //非递归算法int gcd(int a, int b) { int temp; if(a ...
  • Isky110
  • Isky110
  • 2009-12-25 13:39:00
  • 11025

蓝桥杯—算法训练 最大最小公倍数 (简单贪心思想)

贪心
  • become789
  • become789
  • 2017-03-29 20:26:35
  • 1094

常见算法:C语言求最小公倍数和最大公约数三种算法

最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 ...
  • iwm_NeXT
  • iwm_NeXT
  • 2012-04-11 17:22:12
  • 349619

算法训练 最大最小公倍数 简单贪心算法

算法训练 最大最小公倍数   时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。...
  • wr132
  • wr132
  • 2015-02-05 21:56:19
  • 4596

51Nod-1012 最小公倍数LCM【欧几里得算法】

1012 最小公倍数LCM 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入2个正整数A,B,求A与B的最小公倍数。 Inp...
  • tigerisland45
  • tigerisland45
  • 2017-05-30 06:28:30
  • 1002

求最大公约数(GCD)和最小公倍数(LCM)的几个方法

private static int LCM1(int m, int n) { if(m>n) return LCM1(n, m); int i=0; while(++i
  • silent_strings
  • silent_strings
  • 2015-04-30 14:59:40
  • 952

最大公约数与最小公倍数(gcd,lcm)

先来说求最小公约数的方法 1.欧几里得算法(辗转相除法) int gcd(int a,int b) { return b==0?a:gcd(b,a%b); }设两数为a、b(a>b),用gcd(a...
  • ZscDst
  • ZscDst
  • 2017-07-19 16:52:56
  • 571
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 115万+
    积分: 2万+
    排名: 312
    文章分类
    博客专栏
    最新评论