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

求最小公倍数算法:

最小公倍数=两整数的乘积÷最大公约数

求最大公约数算法:

(1)辗转相除法

有两整数a和b:

① a%b得余数c

② 若c=0,则b即为两数的最大公约数

③ 若c≠0,则a=b,b=c,再回去执行①

例如求27和15的最大公约数过程为:

27÷15 余1215÷12余312÷3余0因此,3即为最大公约数

  1. #include<stdio.h>
  2. void main()   /*  辗转相除法求最大公约数 */
  3. {
  4. int m, n, a, b, t, c;
  5. printf("Input two integer numbers:\n");
  6. scanf("%d%d", &a, &b);
  7. m=a;   n=b;
  8. while(b!=0)  /* 余数不为0,继续相除,直到余数为0 */
  9. { c=a%b; a=b;  b=c;}
  10. printf("The largest common divisor:%d\n", a);
  11. printf("The least common multiple:%d\n", m*n/a);
  12. }
#include<stdio.h>
void main() /* 辗转相除法求最大公约数 */
{
int m, n, a, b, t, c;
printf("Input two integer numbers:\n");
scanf("%d%d", &a, &b);
m=a; n=b;
while(b!=0) /* 余数不为0,继续相除,直到余数为0 */
{ c=a%b; a=b; b=c;}
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}

⑵ 相减法

有两整数a和b:

① 若a>b,则a=a-b

② 若a<b,则b=b-a

③ 若a=b,则a(或b)即为两数的最大公约数

④ 若a≠b,则再回去执行①

例如求27和15的最大公约数过程为:

27-15=12( 15>12 ) 15-12=3( 12>3 )

12-3=9( 9>3 ) 9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即为最大公约数

  1. #include<stdio.h>
  2. void main ( )  /* 相减法求最大公约数 */
  3. {
  4. int m, n, a, b, c;
  5. printf("Input two integer numbers:\n");
  6. scanf ("%d,%d", &a, &b);m=a; n=b;
  7. /* a, b不相等,大数减小数,直到相等为止。*/
  8. while ( a!=b)
  9. if (a>b)  a=a-b;
  10. else  b=b-a;
  11. printf("The largest common divisor:%d\n", a);
  12. printf("The least common multiple:%d\n", m*n/a);
  13. }
#include<stdio.h>
void main ( ) /* 相减法求最大公约数 */
{
int m, n, a, b, c;
printf("Input two integer numbers:\n");
scanf ("%d,%d", &a, &b);m=a; n=b;
/* a, b不相等,大数减小数,直到相等为止。*/
while ( a!=b)
if (a>b) a=a-b;
else b=b-a;
printf("The largest common divisor:%d\n", a);
printf("The least common multiple:%d\n", m*n/a);
}

⑶穷举法

有两整数a和b:

① i=1

② 若a,b能同时被i整除,则t=i

③ i++

④ 若 i <= a(或b),则再回去执行②

⑤ 若 i > a(或b),则t即为最大公约数,结束

改进:

① i= a(或b)

② 若a,b能同时被i整除,则i即为最大公约数,

结束

③ i--,再回去执行②

有两整数a和b:

① i=1

② 若a,b能同时被i整除,则t=i

③ i++

④ 若 i <= a(或b),则再回去执行②

⑤ 若 i > a(或b),则t即为最大公约数,结束

改进:

① i= a(或b)

② 若a,b能同时被i整除,则i即为最大公约数,

结束

③ i--,再回去执行②

  1. #include<stdio.h>
  2. void main ()  /* 穷举法求最大公约数 */
  3. {
  4. int  m, n, a, b, i, t;
  5. printf("Input two integer numbers:\n");
  6. scanf ("%d,%d", &a, &b);m=a;  n=b;
  7. for (i=1; i<= a; i++)
  8. if ( a%i == 0 && b%i ==0 )    t=i;
  9. printf("The largest common divisor:%d\n", t);
  10. printf("The least common multiple:%d\n", m*n/t);
  11. }
  12. /*  改进后的
  13. for (t= a; t>0; t-- )
  14. if ( a%t == 0 && b%t ==0 )    break;
  15. */
#include<stdio.h>
void main () /* 穷举法求最大公约数 */
{
int m, n, a, b, i, t;
printf("Input two integer numbers:\n");
scanf ("%d,%d", &a, &b);m=a; n=b;
for (i=1; i<= a; i++)
if ( a%i == 0 && b%i ==0 ) t=i;
printf("The largest common divisor:%d\n", t);
printf("The least common multiple:%d\n", m*n/t);
}
/* 改进后的
for (t= a; t>0; t-- )
if ( a%t == 0 && b%t ==0 ) break;
*/
  1. //穷举法求最小公倍数
  2. for (i= a; ; i++ )
  3. if ( i % a == 0 && i % b ==0 )     break;
  4. printf("The least common multiple:%d\n", i )
  5. //多个数的最大公约数和最小公倍数
  6. for (i= a; i>0; i-- )
  7. if (a%i==0&&b%i==0&&c%i==0)     break;
  8. printf("The largest common divisor:%d\n", i);
  9. for (i= a; ; i++ )
  10. if (i%a==0&&i%b==0&&i% c==0)    break;
  11. printf("The least common multiple:%d\n", i )

转自:http://blog.csdn.net/iwm_next/article/details/7450424

C语言求最小公倍数和最大公约数三种算法的更多相关文章

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

    最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求 ...

  2. C语言求最小公倍数和最大公约数三种算法(经典)

    把以前写的一些经验总结汇个总,方便给未来的学弟学妹们做个参考! --------------------------永远爱你们的:Sakura 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们 ...

  3. c语言求回文数的三种算法的描述

    c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...

  4. 山东理工大学ACM平台题答案关于C语言 1181 C语言实验——最小公倍数和最大公约数

    C语言实验——最小公倍数和最大公约数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 从键盘输入两个正整数,求这两个正整数的最小公 ...

  5. 最短路问题的三种算法&模板

    最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...

  6. Java利用DES/3DES/AES这三种算法分别实现对称加密

    转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...

  7. c语言实现两数交换的三种方法

    实现变量的值互相交换的三种不同方法 方法一:利用第三个变量来实现数值的交换 int tmp; tmp = a; a = b; b = tmp; 此方法直观,简易.不易出错,推荐使用 方法二:利用两个变 ...

  8. 内存分配---FF、BF、WF三种算法

    动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...

  9. 图文实例解析,InnoDB 存储引擎中行锁的三种算法

    前文提到,对于 InnoDB 来说,随时都可以加锁(关于加锁的 SQL 语句这里就不说了,忘记的小伙伴可以翻一下上篇文章),但是并非随时都可以解锁.具体来说,InnoDB 采用的是两阶段锁定协议(tw ...

随机推荐

  1. 【BZOJ2882】工艺 后缀自动机

    [BZOJ2882]工艺 Description 小敏和小燕是一对好朋友. 他们正在玩一种神奇的游戏,叫Minecraft. 他们现在要做一个由方块构成的长条工艺品.但是方块现在是乱的,而且由于机器的 ...

  2. docker desktop

    https://github.com/rogaha/docker-desktop http://blog.csdn.net/tinylab/article/details/45443563

  3. badboy脚本参数化和检查点

    一.badboy脚本参数化 文本参数化 方式一:直接在Variablesl ist添加参数化变量和值,然后在Script里面找到对应需要参数化的内容-属性,进行替换,参数化名需要用${XX}引用: 方 ...

  4. Linux CentOS使用yum安装Docker

    Docker支持以下的CentOS版本: 目前,CentOS仅发行版本中的内核支持Docker. Docker运行在CentOS7上,要求系统为64位.系统内核版本为3.10以上. Docker运行在 ...

  5. 卷积神经网络(CNN)的训练及代码实现

    本文部分内容来自zouxy09的博客.谢谢.http://blog.csdn.net/zouxy09/article/details/9993371 以及斯坦福大学深度学习教程:http://ufld ...

  6. Linux中的自定义变量

    范围: 只在当前Shell中生效 语法: 变量定义: name="xiaol" hello="$name"" hello" 变量调用: ec ...

  7. applicationContext.xml配置简介

    这里简单介绍一下spring的配置文件applicationContext.xml中的一些配置的作用. <context:component-scan base-package="&q ...

  8. Python基础(19)_异常处理

    一.异常处理 错误和异常: 1.错误的种类: 1)语法错误:这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2)逻辑错误: 例如: res1=1/0  .es2=1+'str ...

  9. highcharts基本介绍

    转自:http://www.cnblogs.com/jyh317/p/4189773.html 一.highcharts简介 Highcharts是一款纯javascript编写的图表库,能够很简单便 ...

  10. 预防SQL注入攻击

    /** * 预防SQL注入攻击 * @param string $value * @return string */ function check_input($value) { // 去除斜杠 if ...