最大公约数与最小公倍数
来源:互联网 发布:js 跨域 编辑:程序博客网 时间:2024/06/10 13:48
<pre name="code" class="cpp">好长时间不练了,这次再练想着一步一步的都写出博客来。今天就从简单的说。
最大公约数:
含义:公约数就是能被要求的数整除的数,最大公约数就是公约数中最大的那一个
方法:质因数分解法,辗转相除法(欧几里得算法)
欧几里得的理解:
gcd(a,b) = a%b = r (a = kb + r) 假设d是a和b的公约数,则a|d b|d
gcd(b,a%b) a%b=r=(a-kb), 由于a|d b|d,所以d也是b和a%b的公约数,那么两个式子的公约数一样
最小公倍数:
方法:质因数分解法,利用欧几里得求(a和b的最小公倍数为a*b/(a和b的最大公约是)所以求得最大公约数就得到了最小公倍数)
下面是南阳理工两道简单题以及质因数分解方法
//http://acm.nyist.net/JudgeOnline/problem.php?pid=40#include<stdio.h>void gcd(int n,int m){ int temp, n1=n, m1=m; while(m>0) { temp = n%m; n = m; m = temp; } printf("%d %d\n",n,n1*m1/n);}int main(){ int Tim; scanf("%d",&Tim); while(Tim--) { int a,b; scanf("%d%d",&a,&b); gcd(a,b); } return 0;}//小坑#include<stdio.h>void gcd(int n,int m){ int temp; while(m>0) { temp = n%m; n = m; m = temp; } printf("%d\n",n);}int main(){ int n,m; while(~scanf("%d,%d",&n,&m)) gcd(n,m);}//质因数分解#include<stdio.h>void fac(int n){ int i; while(n%2==0) { printf("%d*",2); n/=2; } for(i=3;i<n;i+=2) { if(n%i==0) { printf("%d*",i); n /= i; i -= 2; } } printf("%d\n",n);}int main(){ int n; scanf("%d",&n); fac(n);}
0 0
- 求最大公约数与最小公倍数
- 最大公约数与最小公倍数问题
- 求最大公约数与最小公倍数
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数
- 求最大公约数与最小公倍数
- 最大公约数 与 最小公倍数
- 最大公约数与最小公倍数源码
- 最小公倍数与最大公约数
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数
- 最小公倍数与最大公约数
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数算法
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数
- 最大公约数与最小公倍数
- Kernighan/Lin Algorithm[翻译]
- C++拷贝构造函数详解
- ANT教程之十五 Ant Junit集成
- xss漏洞的常识(摘抄)
- Hibernate与MyBatis
- 最大公约数与最小公倍数
- Xpath语法介绍及Web网页元素属性查找
- Introduction-to-React-JS
- 求x, 使x的平方为一个各位数字互不相同的9位数
- 斯坦福大学-机器学习20讲-第二讲
- NOIP2015_day1
- 除以路径中所有数 时间戳+LCA+路径压缩 2D
- webservice生成客户端代码时,出现的问题
- 技术人员为什么要写博客