两种方法,一种是辗转想减法,可以对辗转相除法中对大数求模而造成的性能瓶颈进行避免 但不能避免这种情况 100000000,1 第二种用判断奇数偶数,将2的公因子提出来,分为四种情况,x,y均为偶数 x,y其中一个为偶数 x,y均为奇数,那么x-y就为偶数了 package gcd_2_7; publ...
分类:
其他好文 时间:
2015-04-09 15:21:21
阅读次数:
118
//编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。
//例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4
#include
int fun(int x,int y)
{
int res;
res=x%y;
while(res!=0)
{
x=y;
y=res;
res=x%y;//辗转相除法
}...
分类:
编程语言 时间:
2015-04-07 15:41:23
阅读次数:
148
//求最大公约数是用辗转相除法,最小公倍数是根据公式 m,n 的 最大公约数* m,n最小公倍数 = m*n 来计算 #include //将两个整数升序排列 void ascNum(int *p1,int *p2) { int temp; if(*p1 >...
分类:
其他好文 时间:
2015-04-04 18:21:37
阅读次数:
143
一般来说求两个数最大公约数,我们最先想到的是先找到两个数中较小的数,
然后从较小的数开始递减暴力搜索,如果能同时被两个数整除,那么这个数就是最大公约数,不能则继续递减。
但是当两个数很大的时候,这个算法的效率就变得很差,这时我们就需要一个高效算法。
这里我们利用的是中国古代的辗转相除法,关于辗转相除法的思想可以自行百度,我在这里直接贴代码
#include
int gcd(int a, i...
分类:
编程语言 时间:
2015-03-29 12:19:26
阅读次数:
123
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数求最大公约数算法:(1)辗转相除法有两整数a和b:...
分类:
编程语言 时间:
2015-03-29 12:10:46
阅读次数:
196
辗转相除法可以用来计算两个整数的最大公因数(Dcd)。利用辗转相除法求最大公因数的步骤如下:第一步:用较大的数m除以较小的数n得到一个商q0和一个余数r0;第二步:若r0=0,则n为m,n的最大公因数;若r0≠0,则用除数n除以余数r0得到一个商q1和一个余数r1;第三步:若r1=0,则r1为m,n...
分类:
编程语言 时间:
2015-03-28 23:03:04
阅读次数:
147
欧几里得算法欧几里得算法也叫辗转相除法,是求两个整数最大公约数的算法。当然也可以求最小公倍数。算法实现其实算法的实现原理就是,有整数a b两个,每次求的一个数字r = a % b,然后把b放到a的位置,把r放到b的位置,递归调用。就是gcd(a, b) { return gcd(b, a%b); }这个样子的。结束条件是当 a%b == 0的时候停止。最大公约数//
// main.cpp
//...
分类:
编程语言 时间:
2015-03-28 01:13:58
阅读次数:
243
最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,当中一个最小的公倍数是他们的最小公倍数,相同地,若干个整数公有的倍数中最小的正整数称为它们的最小公倍数,维基百科:定义点击打开链接求最小公倍数算法:最小公倍数=两整数的乘积÷最大公约数求最大公约数算法:(1)辗转相除法有两整数a和b:...
分类:
编程语言 时间:
2015-03-21 11:13:44
阅读次数:
149
A:模拟辗转相除法时记录答案
B:3种情况:能减少2,能减少1,不能减少分别考虑清楚
C:利用一个set和一个multiset,把行列分开考虑,利用set自带的排序和查询,每次把相应的块拿出来分成两块插入回去,然后行列分别取最大相乘的作为这次询问的答案
D:一个区间覆盖问题的变形,注意公式的话,很容易发现其实x,w对应的就是一个[x - w, x + w]的区间,然后求最多不重合区间即可
...
分类:
其他好文 时间:
2015-03-19 06:27:31
阅读次数:
143
辗转相除法又名广义欧几里得除法,是用来求解两个数的最大公约数的最佳算法之一。
算法原理:...
分类:
其他好文 时间:
2015-03-18 16:03:58
阅读次数:
139