转自:http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 基本状态:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。 证明: ...
分类:
编程语言 时间:
2017-07-05 13:20:09
阅读次数:
251
辗转相除法(欧几里得算法)是求最大公约数的算法,首先用较大的数除以较小的数,求得商与余数,把余数作为除数,即用原来的除数除以余数,求得商与余数。以此类推,直到余数为零时,除数即为原来两数的最大公约数。 一.递归算法 二.循环版本 ...
分类:
其他好文 时间:
2017-07-05 00:21:58
阅读次数:
191
欧几里德算法又称为辗转相除法,用于计算两个非负整数的最大公因数。其伪代码如下: gcd(a, b) //要求保证传入的a>=b if(b == 0) return a return gcd(b, a % b) 首先说明这个函数能返回a与b的最大公因数。但是我们不从代码到原理,我们要从原理返回代码。( ...
分类:
编程语言 时间:
2017-07-04 01:06:08
阅读次数:
437
欧几里得& 拓展欧几里得(Euclid & Extend-Euclid) 欧几里得算法(Euclid) 背景: 欧几里德算法又称辗转相除法。用于计算两个正整数a。b的最大公约数。 ——百度百科 代码: 递推的代码是相当的简洁: int gcd(int a,int b) { return b == 0 ...
分类:
编程语言 时间:
2017-07-03 16:14:02
阅读次数:
173
[BZOJ2154]Crash的数字表格 试题描述 今天的数学课上,Crash小朋友学习了最小公倍数(Least Common Multiple)。对于两个正整数a和b,LCM(a, b)表示能同时被a和b整除的最小正整数。例如,LCM(6, 8) = 24。回到家后,Crash还在想着课上学的东西 ...
分类:
其他好文 时间:
2017-07-03 10:07:33
阅读次数:
166
题目:本质是求两个数的最大公约数,java大数真好用 ^_^。 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Bi ...
分类:
其他好文 时间:
2017-07-01 22:34:15
阅读次数:
169
求最大公约数和最大公倍数 一、求三个数的最大公约数和最大公倍数 二、求两个数的最大公约数和最大公倍数 ...
分类:
其他好文 时间:
2017-06-30 20:59:08
阅读次数:
135
好久没写题代码能力简直贫弱 这道题思路不难,写起来有点麻烦 首先以某个点为右端点的区间的gcd种类级别是log的(因为下降最少是除2) 预处理所有的四元组(g,l,r,x)表示以x为右端点,左端点在[l,r]内区间公约数都是g 然后以g为第一关键字,x为第二关键字即可 最多选取不相邻区间数dp+线段 ...
分类:
其他好文 时间:
2017-06-30 00:01:16
阅读次数:
253
a=int(raw_input('a'))b=int(raw_input('b'))su=[]if a>b: smaller=b else: smaller=a for i in range(1,smaller+1): if a%i==0 and b%i==0: su.append(i)l=len( ...
分类:
编程语言 时间:
2017-06-25 16:16:12
阅读次数:
210
【题目大意】 定义times(a, b)表示用辗转相除计算a和b的最大公约数所需步骤。 那么有: 1. times(a, b) = times(b, a) 2. times(a, 0) = 0 3. times(a, b) = times(b, a mod b) + 1 对于$1 \leq x \l ...
分类:
其他好文 时间:
2017-06-24 20:57:20
阅读次数:
215