gcd就是欧几里得算法,可以快速的求出俩个数的最大公因数,进而也可以求其最大公倍数(俩数之积除以最大公因数),比较简单直接看代码就好了,一般用递归版,简短精简,敲得快,但如果数剧奇葩,怕溢出,那就用递推版的。 递归版: int gcd(int a,int b) { if(b==0) return a ...
分类:
其他好文 时间:
2016-08-31 18:47:01
阅读次数:
120
定理:对不全为0的数a,b,存在整数x,y使得 ax+by=gcd(a,b) 可使用扩展欧几里得算法来求解x,y 1.求解二元不定方程 ax+by=n 结论:方程有解得充分必要条件是gcd(a,b)|n.若(x0,y0)是方程的一组解,则方程全部解可以表示为:x=x0+b*k,y=y0-a*k, ( ...
分类:
编程语言 时间:
2016-08-23 18:49:36
阅读次数:
146
1 /* 2 求最小公倍数算法: 3 最小公倍数=两整数的乘积÷最大公约数 4 求最大公约数算法: 5 (1)欧几里得算法:辗转相除法 6 有两整数a和b: 7 ① a%b得余数c 8 ② 若c=0,则b即为两数的最大公约数 9 ③ 若c≠0,则a=b,b=c,再回去执行①*/ 10 11 #inc ...
分类:
其他好文 时间:
2016-08-17 11:56:22
阅读次数:
145
扩展欧几里得算法,可以在计算gcd(a,b)的同时,计算出 ax+by=gcd(a,b)中a、b的值 ...
分类:
编程语言 时间:
2016-08-11 13:08:10
阅读次数:
180
题目大意: 已知线性方程ax+by=1; 输入a, b的值, 要求输出整数解x, y的值(输出x, y的最小整数解), 若没有解, 输出"sorry". 分析: 求线性方程的解用扩展欧几里得算法,令gcd(a,b)=d, 如果1是d的倍数表示方程有解, 否则无解. 代码如下: 1 #include ...
分类:
其他好文 时间:
2016-08-07 21:37:21
阅读次数:
148
欧几里德算法(求最大公约数): 顺便写下求最小公倍数(lcm) 朴素的欧几里德: gcd(a, b) = gcd(b, a%b); 扩展欧几里德算法: 该算法一般有三种应用: 应用1: 利用它可以求解整数对(x, y).一定存在这样的整数对(x, y), 使得ax + by = gcd(a, b); ...
分类:
编程语言 时间:
2016-08-03 13:14:56
阅读次数:
315
一、欧几里得算法 二、扩展欧几里得算法 对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。 可见,扩展欧几里德要求a,b,不能为负,所以当出现负数时我们通常采用 |a|(-x)+by=gcd(|a|,b) ...
分类:
编程语言 时间:
2016-08-02 11:33:18
阅读次数:
205