常见算法:C语言求最小公倍数和最大公约数三种算法
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接
求最小公倍数算法:
最小公倍数=两整数的乘积÷最大公约数
求最大公约数算法:
(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即为最大公约数
- #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即为最大公约数
- #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--,再回去运行②
- #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;
- */
- //穷举法求最小公倍数
- for (i= a; ; i++ )
- if ( i % a == 0 && i % b ==0 ) break;
- printf("The least common multiple:%d\n", i )
- //多个数的最大公约数和最小公倍数
- for (i= a; i>0; i-- )
- if (a%i==0&&b%i==0&&c%i==0) break;
- printf("The largest common divisor:%d\n", i);
- for (i= a; ; i++ )
- if (i%a==0&&i%b==0&&i% c==0) break;
- printf("The least common multiple:%d\n", i )
常见算法:C语言求最小公倍数和最大公约数三种算法的更多相关文章
- C语言求最小公倍数和最大公约数三种算法(经典)
把以前写的一些经验总结汇个总,方便给未来的学弟学妹们做个参考! --------------------------永远爱你们的:Sakura 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们 ...
- C语言求最小公倍数和最大公约数三种算法
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接 求 ...
- c语言求回文数的三种算法的描述
c语言求回文数的三种算法的描述 题目描述 注意:(这些回文数都没有前导0) 1位的回文数有0,1,2,3,4,5,6,7,8,9 共10个: 2位的回文数有11,22,33,44,55,66,77,8 ...
- 山东理工大学ACM平台题答案关于C语言 1181 C语言实验——最小公倍数和最大公约数
C语言实验——最小公倍数和最大公约数 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 从键盘输入两个正整数,求这两个正整数的最小公 ...
- 最短路问题的三种算法&模板
最短路算法&模板 最短路问题是图论的基础问题.本篇随笔就图论中最短路问题进行剖析,讲解常用的三种最短路算法:Floyd算法.Dijkstra算法及SPFA算法,并给出三种算法的模板.流畅阅读本 ...
- Java利用DES/3DES/AES这三种算法分别实现对称加密
转载地址:http://blog.csdn.net/smartbetter/article/details/54017759 有两句话是这么说的: 1)算法和数据结构就是编程的一个重要部分,你若失掉了 ...
- LeetCode算法题-First Bad Version(Java实现-三种解法)
这是悦乐书的第200次更新,第210篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第66题(顺位题号是278).您是产品经理,目前领导团队开发新产品.不幸的是,您产品的最 ...
- 缓存算法(FIFO 、LRU、LFU三种算法的区别)
FIFO算法 FIFO 算法是一种比较容易实现的算法.它的思想是先进先出(FIFO,队列),这是最简单.最公平的一种思想,即如果一个数据是最先进入的,那么可以认为在将来它被访问的可能性很小.空间满的时 ...
- 内存分配---FF、BF、WF三种算法
动态分区分配是根据进程的实际需要,动态的为之分配内存空间.而在实现可变分区分配时,将涉及到分区分配中 所用的数据结构.分区分配算法和分区的分配与内存回收的过程. 分区分配中的数据结构:(1)描述空闲块 ...
随机推荐
- (转)C#静态构造函数
静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量. 因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第 ...
- JS 实现 Tab标签切换功能
Tab标签切换 效果图: HTML部分: <div class="wrap"> <ul id="tag"> < ...
- 学习OpenSeadragon之二 (界面缩放与平移规则设置)
OpenSeadragon入门了解请看第一篇:http://www.cnblogs.com/yingjiehit/p/4362377.html OpenSeadragon给我们提供了很多的可选界面元素 ...
- Windows 中JDK安装配置教程
1.准备工作 a.因为Java JDK区分32位和64位系统,所以在安装之前必须先要判断以下我们的系统为多少位系统.右键计算机-属性查看,我安装的是64位 b.下载JDK,地址:http://www. ...
- Css3案例
<!DOCTYPE html> <html> <meta charset=utf-> <head> <style> body{ backgo ...
- Statement执行DQL语句(查询操作)
import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.junit.T ...
- ionic ion-list 滑到底部自动加载数据案例
<ion-content> <ion-list> <ion-item ng-repeat="item in items track by $index" ...
- PHP常用字符串函数
1:访问子字符串:strpos()2:提取子字符串:substr()3:逐字节处理字符串:strstr()4:计算字符串长度:strlen()5:替换子字符串:substr_replace()6:按字 ...
- Android之GPS应用开发
LocationManager--------------->Context.LOCATION_SERVICE LocationProvider--------------->Locati ...
- LeetCode _ Word Break
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separa ...