关闭

计算最小公倍数LCM

标签: 最大公约数最小公倍数gcdlcm
1598人阅读 评论(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;  
  
}  


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

private static int LCM1(int m, int n) { if(m>n) return LCM1(n, m); int i=0; while(++i<m){ if(n*i%m==0) return n*i; } return ...
  • silent_strings
  • silent_strings
  • 2015-04-30 14:59
  • 858

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

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

51Nod1012 最小公倍数LCM(C语言)

输入2个正整数A,B,求A与B的最小公倍数。 Input 2个数A,B,中间用空格隔开。(1 Output 输出A与B的最小公倍数。 Input示例 30 105 Output示例 210 C语言AC代码 #include int gcd(int a,i...
  • sinat_39591298
  • sinat_39591298
  • 2017-08-12 15:50
  • 218

hdu 1108 最小公倍数(lcm)

Problem Description 给定两个正整数,计算这两个数的最小公倍数。 Input 输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数. Output 对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。 Sample Inp...
  • ZoneForZero
  • ZoneForZero
  • 2018-01-16 20:01
  • 3

k个数中求任意k-1个数的最小公倍数(LCM)的最小值

原题:http://topic.csdn.net/u/20110623/10/0324c75e-f72a-4894-83e9-f5a00fc88f62.html?85618描述:有k个正整数 任取其中k-1个数 找到一个他们的最小公倍数数N 求N的最小值分析:可以采用以下三种方法:*********...
  • ljsspace
  • ljsspace
  • 2011-06-25 15:21
  • 1719

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

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

52nod 1012最小公倍数LCM

1012 最小公倍数LCM 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 输入2个正整数A,B,求A与B的最小公倍数。 ...
  • leibniz_zhang
  • leibniz_zhang
  • 2016-02-02 10:02
  • 266

杭电-1108 最小公倍数 (LCM&GCD)

最小公倍数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 47734 &#...
  • lu_1110
  • lu_1110
  • 2016-07-20 17:37
  • 137

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

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

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

算法训练 最大最小公倍数   时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输...
  • wr132
  • wr132
  • 2015-02-05 21:56
  • 3585
    个人资料
    • 访问:909491次
    • 积分:20720
    • 等级:
    • 排名:第452名
    • 原创:1086篇
    • 转载:87篇
    • 译文:0篇
    • 评论:403条
    文章分类
    博客专栏
    最新评论