算法第九节:求最大公约数和最小公倍数
来源:互联网 发布:影集软件 编辑:程序博客网 时间:2024/05/22 21:19
算法分析:两个数的最大公约数,是指两个数a,b的公约数中最大的那个。例如4和8,其公约数为1,2,4,则4为4和8的最大公约数
求最大公约数算法:从两个数中较小的那个开始依次递减,得到第一个这两个数的公约数即为这两个数的最大公约数
如果一个数i为a和b的公约数,那么一定满足a%i=0且b%i=0。所以,在计算这两个数的公约数时,只需从i=min(a,b)开始依次递减1,并逐一判断i是否是a和b的公约数,得到的第一个公约数即为a和b的最大公倍数。
所谓的最小公倍数,是指a,b两个数的公倍数中最小的那个。列入5和3,两个数的最小公倍数可以是15,30,45…….,那么15为其最小公倍数。
求最小公倍数算法:从两个数中最大的那个数开始依次加1,得到的第一个公培数就是这两个数的最小公倍数。
如果一个数i为a和b的公倍数,那么一定满足i%a=0且i%b=0,。所以算法只需从i=max(a,b)开始逐一加1,并判断i是否为a和b的公约数,得到的第一个公倍数就是其最小公倍数
#include<stdio.h>int gcd(int a,int b){ //求最大公约数函数 int min; if (a < 0 || b<0)return -1; if (a > b)min = b; else min = a; while (min){ if (a%min == 0 && b%min == 0) return min; min--; } return -1;}int lcm(int a,int b){ //求最小公培数函数 int max; if (a<0||b<0)return -1; if (a>b)max = a; else max = b; while (max){ if (max%a == 0 && max%b == 0) return max; max++; } return -1;}int main(){ int a, b; printf("Please input two digit for getting LCD and LCM:");//输入两个整数 scanf_s("%d %d",&a,&b); printf("The GCD of %d and %d is %d\n",a,b,gcd(a,b)); printf("The LCM of %d and %d is %d\n", a, b,lcm(a, b)); getchar(); return 0;}
阅读全文
0 0
- 算法第九节:求最大公约数和最小公倍数
- 求最大公约数和最小公倍数算法
- 简单算法--求最大公约数和最小公倍数
- 欧几里德算法求最大公约数和最小公倍数
- C语言求最大公约数和最小公倍数算法
- 求最小公倍数和最大公约数的算法
- C算法-求最大公约数和最小公倍数
- 多种算法求最大公约数和最小公倍数
- JAVA算法基础 求最大公约数和最小公倍数
- 求最大公约数(gcd)和最小公倍数(lcm)算法
- 求最大公约数和最小公倍数的三个算法
- 求最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 求最小公倍数和最大公约数
- 求最大公约数和最小公倍数
- 求最大公约数和最小公倍数
- 【问题解决】MySQL5.5 向MySQL数据库中插入汉字时,提示:Incorrect string value: '\Xe7\x8E...' for column 'XXX' at row 1
- 226. Invert Binary Tree
- JAVA 万年历
- X
- 事件处理——仿酷狗音乐和QQ6.0侧滑菜单
- 算法第九节:求最大公约数和最小公倍数
- Problem 6 Sum square difference
- Java 常见小问题源代码 掷骰子 游戏 三个骰子,约定三个骰子的点数1-6
- 剑指offer:第32题从1到n整数中1出现的次数
- java compareTo()
- 【多线程应用2】CreateThread与_beginthreadex本质区别
- 随机生成字母数字的组合
- 函数签名(方法签名)Type signature
- javascript1