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

转载 2013年05月11日 23:51:53

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

求最小公倍数算法

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

求最大公约数算法

(1)辗转相除法

有两整数ab

① a%b得余数c

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

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

例如求2715的最大公约数过程为:

27÷15 1215÷12312÷30因此,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. }  

⑵ 相减法

有两整数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. }  

⑶穷举法

有两整数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. */  

  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. //多个数的最大公约数和最小公倍数  
  7.      for (i= a; i>0; i-- )  
  8.          if (a%i==0&&b%i==0&&c%i==0)     break;  
  9.      printf("The largest common divisor:%d\n", i);  
  10.      for (i= a; ; i++ )  
  11.          if (i%a==0&&i%b==0&&i% c==0)    break;  
  12.      printf("The least common multiple:%d\n", i )  

C语言三种算法求解最大公约数与最小公倍数

问题:请从键盘上输入两个数值 x,y,请用C语言求出这两个数值的最大公约数与最小公倍数。 首先,我们要想解决这道问题,就要了解什么是最大公约数与最小公倍数。 最大公因数;也称最大公约数、最大公因子,指...
  • Zhang_1218
  • Zhang_1218
  • 2017-06-13 22:59:15
  • 10214

C语言最大公约数三种算法

这次我们的作业是用三种不同的算法计算出输入两个正整数的最大公约数。
  • ZE_Fun
  • ZE_Fun
  • 2017-03-21 01:09:53
  • 3569

C语言 求最大公约数的三种方法,利用最大公约数求最小公倍数,通过分解质因数法来验证

/** 求最大公约数的三种方法,穷举法,相减法,辗转相除法 公式法求最小公倍数:a*b/gcd(a,b) */ #include int GCD(int,int); static int GCD1(...
  • qq_21808961
  • qq_21808961
  • 2017-10-07 17:10:27
  • 426

C语言经典例子,求两个数的最大公约数和最小公倍数

C语言,求两个整数的最大公约数。
  • gebushuaidanhenhuai
  • gebushuaidanhenhuai
  • 2016-11-07 23:04:40
  • 6208

C语言实现3个数的最小公倍数和最大公约数

根据求两个数的最小公倍数和最大公约数的方法求3个数的最大公约数和最小公倍数。 主要的思想就是利用a%b==0&a%c==0这样的来判断是否满足,再利用循环计数即可。#include int main...
  • a1b2c3d4123456
  • a1b2c3d4123456
  • 2015-06-30 22:36:21
  • 3585

C语言求最大公约数和最小公倍数算法总结

  • 2011年03月25日 13:27
  • 42KB
  • 下载

最大公约数和最小公倍数 分解质因数 完全平方数

最大公约数和最小公倍数分解质因数完全平方数--> * 1、求最大公约数和最小公倍数 * 2、分解质因数 80=2*2*2*2*5 * 3、有1、2、3、4个数字, 能组成多少个互不相同且无重复数...
  • sunrainamazing
  • sunrainamazing
  • 2017-01-21 13:46:51
  • 566

C语言之基本算法10—最大公约数和最小公倍数

/* ================================================================== 题目:求两个数的最大公约数和最小公倍数。 ======...
  • LZX19901012
  • LZX19901012
  • 2015-07-07 04:20:39
  • 1121

c语言:求两个数的最大公约数和最小公倍数

#include int main() { int a,b,t,r; printf("请输入两个数字:\n"); scanf("%d %d",&a,&b); if(a...
  • samxiaoguai
  • samxiaoguai
  • 2017-11-09 23:14:32
  • 106

如何用c语言求最大公约数和最小公倍数

  • 2009年04月26日 16:23
  • 8KB
  • 下载
收藏助手
不良信息举报
您举报文章:常见算法:C语言求最小公倍数和最大公约数三种算法
举报原因:
原因补充:

(最多只允许输入30个字)