数学
文章平均质量分 56
KingWolfOfSky
这个作者很懒,什么都没留下…
展开
-
欧拉数e
原创 2011-08-22 17:10:03 · 2987 阅读 · 0 评论 -
二进制最大公约数算法
求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。二进制最大公约数算法避免了Euclid算法的取余数过程。二进制最大公约数基于下述事实:若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b/2)若a是奇数、b是偶数,则gcd(a,b)=gcd(a/2,b/2)原创 2012-01-18 14:09:18 · 5897 阅读 · 2 评论 -
快速幂取模
利用二进制扫描的方法快速的计算ab mod c,显然用常规方法计算74237 mod 4233计算量过大。基本原理:(a×b)mod c=((a mod c)×b)mod c例如:35 mod 7=3(101)2 mod 7=((3(100)2 mod 7)×3)mod 7=((9(10)2 mod 7)×3)mod 7=(((9 mod 7)(10)2 mod 7)×3)mod 7=((原创 2012-01-18 15:40:20 · 937 阅读 · 0 评论 -
素数的Miller_Rabbin测试
【引理】如果p是一个素数的话,那么对任意一个小于p的正整数a,a, 2a, 3a, ..., (p-1)a除以p的余数正好是一个1到p-1的排列。(例如,5是素数,3, 6, 9, 12除以5的余数分别为3, 1, 4, 2,正好就是1到4这四个数。) 【证明】( 反证法)假如结论不成立的话,那么就是说有两个小于p的正整数m和n使得na和ma除以p的余数相同。不妨假设n>m,则p可以整除a(原创 2012-01-18 16:42:06 · 1204 阅读 · 0 评论 -
最大公约数与欧几里德算法
记a、b的最大公约数为gcd(a,b)。这里对于最大公约数的讨论仅限于非负整数,因为显然有gcd(a,b)=gcd(|a|,|b|)。计算最大公约数的Euclid算法基于下面定理:【GCD递归定理】对于任意非负整数a和任意正整数b,gcd(a,b)=gcd(b,a%b)。Euclid算法最简单的递归版本(C语言版)如下:int Euclid(int a,int b){原创 2012-01-17 16:24:50 · 3465 阅读 · 1 评论 -
筛法打印质数表【附:100000以内质数表】
发现在做ACM题目的时候经常会用到一些质数,因此使用埃拉托斯特尼筛法打印质数表以保存之。埃氏筛或爱氏筛,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去.....原创 2012-01-13 21:29:51 · 28399 阅读 · 0 评论