欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 第一种证明: a可以表示成a = kb + r,则r = a mod b 假设d是a,b的一个公约 ...
分类:
编程语言 时间:
2017-02-01 20:39:18
阅读次数:
243
求最大公约数,用欧几里得算法(辗转相除法)。 ...
分类:
其他好文 时间:
2017-02-01 11:49:52
阅读次数:
144
# include int main() { int a,b,c,x,y; printf("请输入两个正整数,用逗号间隔:"); scanf("%d,%d",&a,&b); x=a; y=b; if (ab b=c; } while (b!=0) { c=a; a=b; b=c%b; } c=x*y... ...
分类:
其他好文 时间:
2017-01-29 23:58:41
阅读次数:
389
方法一:穷举 方法二:辗转相除 来自学习辅导 ...
分类:
其他好文 时间:
2017-01-06 16:39:14
阅读次数:
197
前面学了一个星期的C++,以前阅读C++代码有些困难,现在好一些了。做了一些NOI的题目,这也是一个长期的目标中的一环。做到动态规划的相关题目时发现很多问题思考不通透,所以开始系统学习。学习的第一本是《数据结构与算法C++描述》第三版,边学边做一些笔记。所以这些笔记中的代码有很多将会非常简单,甚至可 ...
分类:
编程语言 时间:
2016-12-31 23:56:42
阅读次数:
323
辗转相除法最大的用途就是用来求两个数的最大公约数。 用(a,b)来表示a和b的最大公约数。 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c)。 (证明过程请参考其它资料) 例:求 15750 与27216的最大公约数。 解: ∵27216=15750×1+11466 ∴(1 ...
分类:
编程语言 时间:
2016-12-25 01:59:23
阅读次数:
203
1 #include 2 void sort(int *pa,int *pb){//a,b按照从大到小的次序排列(利用了指针,实现“双向”传递) 3 int t; 4 if(*pa<*pb){ 5 t=*pa;*pa=*pb;*pb=t; 6 } 7 } 8 int gcd_1(int a,int ... ...
分类:
其他好文 时间:
2016-12-24 16:57:00
阅读次数:
183
之前一直只知道欧几里得辗转相除法,今天学习了一下另外一种、在处理大数时更优秀的算法——Stein 特此记载 1.欧几里得(Euclid)算法 又称辗转相除法,依据定理gcd(a,b)=gcd(b,a%b) 实现过程演示: sample:gcd(15,10)=gcd(10,5)=gcd(5,0)=5 ...
分类:
编程语言 时间:
2016-12-16 22:35:30
阅读次数:
185
参考:https://discuss.leetcode.com/topic/49238/math-solution-java-solution The basic idea is to use the property of Bézout's identity and check if z is a ...
分类:
其他好文 时间:
2016-11-27 07:45:30
阅读次数:
185