上一页 1 2 3 4 5 6 7 ··· 10 下一页
摘要: 求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。二进制最大公约数算法避免了Euclid算法的取余数过程。二进制最大公约数基于下述事实:若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b/2)若a是奇数、b是偶数,则gcd(a,b)=gcd(a/2,b/2)若a、b都是奇数,则gcd(a,b)=gcd((a-b)/2,b)因此可写出二进制最大公约数算法如下(C语言版): 1 int gcd(int a,int b){ 2 int c=1; 3 while(a-b){... 阅读全文
posted @ 2012-01-18 14:16 狼の禅 阅读(1082) 评论(0) 推荐(1) 编辑
摘要: 记a、b的最大公约数为gcd(a,b)。这里对于最大公约数的讨论仅限于非负整数,因为显然有gcd(a,b)=gcd(|a|,|b|)。计算最大公约数的Euclid算法基于下面定理:【GCD递归定理】对于任意非负整数a和任意正整数b,gcd(a,b)=gcd(b,a%b)。Euclid算法最简单的递归版本(C语言版)如下:1 int Euclid(int a,int b)2 {3 if(b)return Euclid(b,b%a);else return a;4 }迭代版本(C语言版)如下:1 int Euclid(int a,int b)2 {3 while(a=a%b)a^=... 阅读全文
posted @ 2012-01-17 16:31 狼の禅 阅读(1842) 评论(2) 推荐(3) 编辑
摘要: 发现在做ACM题目的时候经常会用到一些质数,因此使用埃拉托斯特尼筛法打印质数表以保存之。埃氏筛或爱氏筛,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。 C++代码如下:long FilterPrime(int n){ long count=0; bool* isPrimes = new bool[n+1]; for(int i=2;i<=n;++ 阅读全文
posted @ 2012-01-13 21:35 狼の禅 阅读(3332) 评论(1) 推荐(5) 编辑
摘要: I’m a programmer,damnit. I don’t write code. ——The anti-programming programmer 阅读全文
posted @ 2012-01-13 17:01 狼の禅 阅读(1465) 评论(1) 推荐(1) 编辑
摘要: 2011年11月11日,图灵社区就Ruby的设计和中国程序员关注的诸多话题,采访了Ruby设计者松本行弘先生,以下为访谈内容。(视频在此)图灵社区:《松本行弘的程序世界》中文版上市之后,在程序员(不仅仅是Ruby)社区取得很好的反响,在此我们对您表示祝贺。在这本书里面,您以Ruby的设计为参照,讨论了编程语言设计与开发的很多知识,这是挺新鲜的角度。是否可以介绍一下,您是如何设计出这样的写作角度的呢?松本行弘:我写过一本《面向对象的语言Ruby》,那本是专门介绍Ruby的,这一本(指《松本行弘的程序世界》)是介绍编程语言知识的。以这样的形式撰写,我还是头一次。这本来是写给《日经Linux》杂志的 阅读全文
posted @ 2011-11-20 17:40 狼の禅 阅读(6034) 评论(4) 推荐(6) 编辑
上一页 1 2 3 4 5 6 7 ··· 10 下一页
我要啦免费统计