摘要: 最近看了潘震皓的《置换群快速幂运算 研究与探讨》,总结一下。具体推导过程参见原文。1、置换群的乘方:求T^k(k为正整数)对于置换T,用数组a[i][]表示置换T的循环,约定a[i][0]为该循环内最小的数,且l[i]表示对应循环的长度,记。:对每个循环,若l[i]是k的倍数,则乘方之后分裂为k个循环,并且每个循环分别是循环a[i]中下标j mod k = 0, 1, 2....的元素按顺序连接。对每个循环,若gcd(l[i], k) = 1,则乘方之后仍然是一个循环,设原循环为数组a[i],长度为l[i],乘方之后为a[i]',则a[i]'[j] = a[i][k*j mod 阅读全文
posted @ 2013-10-23 15:00 Plumrain 阅读(1476) 评论(1) 推荐(0) 编辑
摘要: 大素数检测大素数检测常用的方法为miller_rabin。网上讲这个方法的文章博客已经很多了,我在这里就只转载一篇别人的文章。原文出处:http://www.cppblog.com/zoyi-zhang/archive/2008/09/23/62572.aspx 1 大素数的检验 2 费马小定理:a^(p-1) mod p = 1(p是素数&&a0) 3 4 首先我们证明这样一个结论:如果p是一个素数的话,那么对任意一个小于p的正整数a,a, 2a, 3a, …, (p-1)a 5 除以p的余数正好是一个1到p-1的 6 排列。例如,5是素数,3, 6, 9, 12除以5的余数分别为3, .. 阅读全文
posted @ 2013-10-23 12:48 Plumrain 阅读(2333) 评论(0) 推荐(0) 编辑