关于新blog…

Agnimon 发表于 2008-04-02 13:39:30

在某TS的推荐下去这儿申请了个blog。最诱人的地方在于它天然支持语法加亮和tex公式。不过简单试用后发现,它的tex和语法加亮全部是要经过数次鼠标点击才能完成的,这对追求速度常用键盘的programmers来说是个很大的弊端。
于是在那边贴了我的某文里头的一部分,也贴在这儿对比一下效果吧。
PS:好吧,这儿的效果也囧,果然这个JS和真正的tex还是有很大差距的…在这边也一样要进行很多修改

同余是一门古老的学问。中国古代对同余问题进行了深入的研究,并且获得了许多漂亮的结论。下面先对同余知识进行介绍。

同余问题所研究的是余数,假设整数n可以被表示为`n=px+r, p,x,r \in Z`,那么r就是n除p的余数,也叫n模p的值。如果a和b除p的余数相同,那么写成式子是这样:`a \equiv b \pmod{p}`。注意,广义情况下这个b不一定是非负数,负数的情况下意义与各种计算机语言中`mod`或者\% 的意义不同。具体意义下面再说。

同余式的两边可以加减任何整数。而r为负数的情况也是由此产生的。如`100 \equiv 1 \pmod{3} \Rightarrow 97 \equiv -2 \pmod{3}`。同余式两边可以同时乘一个数。比如`100 \equiv 1 \pmod{3} \Rightarrow 200 \equiv 2 \pmod{3}`。同余式两边也可以同时除以一个数,如果除得的结果都是整数且这个除数与模互质。当然,再继续推广下去,同余式两边也不一定是整数,只要有理就行。不过一般我们不这么推广,还是认为同余式中的所有数都应该是整数。类似的,我们可以将两个模相同的同余式相加、减、乘。

下面介绍Fermat小定理。
`a^{p-1} \equiv 1 \pmod{p}`
其中p为素数,`a<p, a\inZ*`。这个定理的证明很巧妙,我认为也有必要介绍一下。

首先我们需要这样一个结论,如果p是一个素数,那么对任何`a<p, a\inZ*`,`a, 2a, 3a, \ldots, (p-1)a`,这些数对p的模恰好是1到(p-1)的某个排列。
反证,首先这些数之中显然不会有任何一个模p为0,那么假设命题不成立,由抽屉原理,必有某个`ia`和`ja`对p的模相等。不妨假设`i>j`,那么`(i-j)a`一定可以整除p,这与前面的结论矛盾,因此命题成立。
接下来,将这些数字全部乘起来,求他们的积对p的模。根据前面的结论,可以得到这样一个同余式
`(p-1)!a^{p-1} \equiv (p-1)! \pmod{p}`
显然`(p-1)!`与`p`互素,于是两边除`(p-1)!`即可得证。

GCD是欧几里德法求最大公约数的简称。这个方法是如此著名而简单。假设我们希望求`a`和`b`的最大公约数,定义函数
`(a,b)=gcd(a,b)=\begin{cases} gcd(b, a\%b), & b\ne0 \ a, & b=0 \end{cases}`
这就是gcd。实现时可以直接递归实现,或者可以非递归用个while实现。不过gcd有一些很不寻常的写法,比如不用模运算的方法,那些属于歪门邪道,还是不作介绍。它的复杂度粗略是`O(logn)`。
下面我们来介绍拓展欧几里德法。如果`(a,b)=d`,那么必定存在整数`x,y`满足方程`ax+by=d`。我们可以通过拓展欧几里德法来求出一个可行的`x,y`。具体方法也是迭代,相比数学表示还是程序表达比较方便。

    int exgcd(int a, int b, int &x, int &y)
    {
      if (b==0) {x=1; y=0; return a;}
      exgcd = exgcd(b, a\%b, x, y);
      int t=x; x=y; y=t-((int)(a/b))*y;
    }

为了理解这个程序,我们可以倒过来看。递归到最后一层的时候`b=0`,那么方程`ax+by=d`此时的解显然是`x=1, y=0`。而当递归到某中间层的时候,如果我们能求出`bx'+(a-\left \lfloor \frac{a}{b} \right \rfloor)y' = d`的解`x', y'`,通过对方程简单的变形就可以发现,
`bx'+(a-\left \lfloor \frac{a}{b} \right \rfloor)y' = d \Leftrightarrow y'a + (x' - \left \lfloor \frac{a}{b} \right \rfloor y')b = d`
于是原方程`ax+by=d`的解就是`x=y', y= (x' - \left \lfloor \frac{a}{b} \right \rfloor y')`。
收藏: QQ书签 del.icio.us 订阅: Google 抓虾

最新评论

发表评论

* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 
 

分类小组论坛
杂谈, 娱乐、八卦, 文学、艺术, 体育, 旅游、同城, 象牙塔, 情感, 时尚、生活, 星座, 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定