1.背景 欧几里得算法是一个求最大因子的快速算法。如果m,n存在最大因子k,假设m=x*n+r,那么m和n可以整出k的话,r也肯定可以整除k 因为定理:如果M>N,则M mod N2.代码 package Algorithm_analysis;
public class Euclid {
public static void mai...
分类:
编程语言 时间:
2014-11-25 14:31:25
阅读次数:
197
【题意描述】给定这样一个表达式:X1/X2/X3/·····/Xk,其中Xi是正整数。除法表达式应到按照从左到右的顺序求和。但在表达式中嵌入括号可以改变计算顺序。输入表达式,判断是否可以通过加括号使得表达式最后的值为整数。【分析】表达式可以写成E=(X1·X3·····Xk)/X2;(X1一定在分子...
分类:
编程语言 时间:
2014-11-20 06:45:45
阅读次数:
127
由于今天上午在做数论知识的笔记,发现那时候赵老师讲的线性丢番图(求ax+by=c的特解)部分完全搞不懂,后来网上查了一下才发现这个公式就是求同余方程,所用方法就是扩展欧几里得算法。正好红皮书上有这么一个模板,直接敲了下来然后稍作修改。后来发现POJ上的1061题就是这样一个类型,用了三个小时,荒.....
分类:
其他好文 时间:
2014-11-18 06:52:37
阅读次数:
169
最近的密码学实验,要求模逆,以前都没认真的研究过扩展的欧几里得算法,就趁着这个机会,把扩展的欧几里得算法好好的研究了一番;
扩展的欧几里得算法的应用范围也很广泛:1.可以用来求解不定方程的解。2.可以用来求解模线性方程(线性同余方程)3.求解模的逆元。
由这个名称我们就可以得知,这个算法是对欧几里得算法的扩展,欧几里得算法是求两个数的最大公约数,而扩展的算法就是对上面式子的x,y进行求解。
...
分类:
编程语言 时间:
2014-11-15 17:11:35
阅读次数:
225
中国剩余定理的非互质形式任意n个表达式一对对处理,故只需处理两个表达式。x = a(mod m)x = b(mod n)km+a = b (mod n)km = (a-b)(mod n)利用扩展欧几里得算法求出kk = k0(mod n/(n,m)) = k0 + h*n/(n,m)x = km+a...
分类:
其他好文 时间:
2014-11-14 06:54:38
阅读次数:
146
求最小公约数,最容易想到的是欧几里得算法,这个算法也是比较容易理解的,效率也是很不错的。也叫做辗转相除法。
对任意两个数a,b(a>b),d=gcd(a,b),如果b不为零,那么gcd(a,b)=gcd(b,a%b)
证明: 令 r=a%b,即存在k,使得 a=b*k+r,那么r=a-b*k;显然r>=0, r%d=((a%d)-(b*k)%d)%d,因为a%d=b%d=0,所以r%d=...
分类:
编程语言 时间:
2014-11-12 21:17:10
阅读次数:
318
平常我们使用拓展欧几里德算法求pm + qn = gcd(m, n)这种表示时,一般都会选择递归的方式来实现,因为欧几里得算法的递归深度最多也只有O(lgn), according to lame's theorem,所以这个递归用栈是可以忽略的。但其实只需要循环就可以求出一组pm + qn = g...
分类:
编程语言 时间:
2014-11-08 23:33:45
阅读次数:
267
一、欧几里得算法名字非常高大上的不一定难,比如欧几里得算法。。。其实就是求两个正整数a, b的最大公约数(即gcd),亦称辗转相除法需要先知道一个定理:gcd(a, b) = gcd(b, amod b) (其中a mod b != 0) 或 b (其中a mod b == 0)证明:后半部分呢。。...
分类:
编程语言 时间:
2014-11-07 18:32:29
阅读次数:
215
求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
最大公约数的求法中最过著名的莫过于欧几里得辗展相除法,它有两种形式(递归与非递归,其实是一样的,任何递归都可以写成非递归)...
分类:
编程语言 时间:
2014-10-31 15:49:21
阅读次数:
373
欧几里得算法基于这样一个 GCD 递归定理:$gcd(a, b) = gcd(b, a\bmod{b}) $证明如下:假设 $a > b$, $a = kb + r(0 0$ 时, 假设我们已经求得了方程 $bx + (a\bmod{b})y = gcd(b, a\bmod{b})$ 的一组解 $....
分类:
编程语言 时间:
2014-10-31 15:22:41
阅读次数:
279