- 博客(21)
- 资源 (4)
- 收藏
- 关注
原创 【笔记】Big Integer - Miller-Rabin Primality Test
Miller-Rabin Testbase可以查表,当n不够大时private static readonly BigInteger[][] TEST_BASE ={ new BigInteger[] { 2 }, new BigInteger[] { 2, 3 }, new BigInteger[] { 31, 73}, new BigIn...
2018-11-19 15:11:51 191
原创 【笔记】Big Integer - Modular Exponentiation
Montgomery Reduce/// <summary>/// <paramref name="left"/> * <paramref name="right"/> * R ^ -1 (mod <paramref name="modulo"/>)/// (R = 2 ^ bitLength(<paramr
2018-11-19 13:38:26 196
原创 【笔记】Big Integer - Modular Inverse
Modular Inverseax + by = gcd(a, b),gcd(a, b) = 1时,ax + by = 1,ax = 1 (mod b),x = a^-1 (mod b),x即a的模逆。Shifting/// <summary>/// <paramref name="value"/> ^ -1 (mod <paramref name="...
2018-11-18 15:41:38 195
原创 【笔记】Big Integer - Lehmer's Euclidean Algorithm
Lehmer's Euclidean Algorithm给定正整数a, b (a >= b),重复取二进制前32位进行欧几里得算法,直到a和b的二进制长度小于等于32位,这时用uint版本的欧几里得算法求得的gcd就是原来的a和b的gcd;/// <summary>/// 计算<paramref name="a"/>和<paramref name...
2018-11-16 15:49:08 229
原创 【笔记】Big Integer - Binary Euclidean Algorithm
BigInteger to/from (uint[], bool)用(uint[], bool)来表示有符号大数,其中uint[]是大数的绝对值,bool为false时是负数。/// <summary>/// (<see cref="uint"/>[], <see cref="bool"/>) to <see cref="BigInteger&quo
2018-11-15 15:05:15 177
原创 【笔记】Java BigInteger - Division
BigInteger to/from (uint[], bool)用(uint[], bool)来表示有符号大数,其中uint[]是大数的绝对值,bool为false时是负数。/// <summary>/// (<see cref="uint"/>[], <see cref="bool"/>) to <see cref="BigInteger&quo
2018-11-14 18:09:21 600
原创 【笔记】Java BigInteger - Square
(uint[], bool)表示大数,uint[]大数的绝对值,bool为false时是负数。Classical Square/// <summary>/// Classical平方,数组第一个<see cref="uint"/>存放最高32位,最后一个<see cref="uint"/>存放最低32位。/// </summary>p...
2018-11-10 12:04:16 452
原创 【笔记】Java BigInteger - Multiplication
BigInteger to/from uint[]用uint[]来表示非负大数,其中数组开头是大数的最高32位,数组结尾是大数最低32位。/// <summary>/// <see cref="uint"/>数组转为非负大整数/// </summary>private static BigInteger ValueOf(uint[] value)...
2018-11-09 15:47:34 392
原创 【笔记】Java BigInteger - Addition/Subtraction
BigInteger to/from uint[]用uint[]来表示非负大数,其中数组开头是大数的最高32位,数组结尾是大数最低32位。/// <summary>/// <see cref="uint"/>数组转为非负大整数/// </summary>private static BigInteger ValueOf(uint[] value)...
2018-11-08 18:33:38 563
原创 【笔记】TAOCP Vol4 - Combination
组合个数/// <summary>/// <paramref name="n"/>个元素集合中所有<paramref name="m"/>个元素组合的个数。/// <paramref name="m"/> &gt;= 0; <paramref name="n"/>
2018-11-06 17:56:01 180
原创 【笔记】TAOCP Vol4 - Permutation
Lexicographic(字典顺序)给定一个[2,12]之间的整数n,升序返回int[]集合,数组里的数字代表索引。譬如n = 4时,返回0123,0132,0213,0231,0312,0321,1023,1032,1203,1230,1302,1320,2013,2031,2103,2130,2301,2310,3012,3021,3102,3120,3201,3210对于任...
2018-11-06 16:36:28 114
原创 【笔记】Hacker's Delight - Some Elementary Functions
Newton's MethodInteger Square Root难点在于计算x0,第一种方法x0 = 2^k >= sqrt(n),k取最小值/// <summary>/// 返回<paramref name="n"/>平方根,向下取整/// </summary>public static int IntegerSquare...
2018-11-06 15:40:28 228
原创 【笔记】Hacker's Delight - Counting Bits
Counting 1-Bits(二进制1的个数)/// <summary>/// <paramref name="n"/>二进制1的个数/// </summary>public static int Population(uint n){ n -= (n >> 1) & 0x5555_5555; n = (n...
2018-11-06 14:26:29 445
原创 【笔记】Hacker's Delight - Power-Of-2 Boundaries
Rounding Up/Down to a Multiple of a Known Power of 2(上下取整为2的n次方)Rounding Down/// <summary>/// greatest power of 2 less than or equal to <paramref name="n"/>/// </summary>...
2018-11-06 13:20:18 226
原创 【笔记】Modular Inverse
扩展欧几里得方法可以求解ax + by = gcd(a, b),当gcd(a, b) = 1时,ax + by = 1。ax = 1 (mod b), x即a的模逆。by = 1 (mod a),y即b的模逆。最简单的模逆运算就是调用扩展欧几里得方法,扩展欧几里得方法见另一篇笔记。/// <summary>/// <paramref name="value"...
2018-11-06 11:41:23 453 1
原创 【笔记】Binary Extended Euclidean Algorithm
扩展欧几里得算法给定非负整数a, b,求解向量(u1, u2, u3),使得au1 + bu2 = u3 = gcd(a, b)。扩展欧几里得算法的除法版本引入辅助向量(v1, v2, v3),使得av1 + bv2 = v3 代码如下:/// <summary>/// 返回{x, y, gcd}, 使得<paramref name="a"/>x + &...
2018-11-04 16:56:26 366
原创 【笔记】Binary Euclidean Algorithm
欧几里得算法u,v都是偶数时 gcd(u, v) = 2gcd(u/2, v/2)u,v只有一个偶数时,偶数u时 gcd(u, v) = gcd(u/2, v);偶数v时 gcd(u, v) = gcd(u, v/2)u,v都是奇数时,u > v时 gcd(u, v) = gcd((u - v)/2, v); u < v时 gcd(u, v) = gcd(u, (v ...
2018-11-02 12:10:47 274
原创 【日记】Eratosthenes Sieve
原理:偶数不可能是素数,素数的倍数也不可能是素数。参考wiki——https://en.wikipedia.org/wiki/Eratosthenes因为空间开销是Ω(n),所以当n比较大时,效率会很低。private static readonly int ERATOSTHENES_THREADHOLD = 10_000;/// <summary>/// 埃...
2018-11-02 08:19:35 283
原创 【日记】Miller-Rabin Primality Test
Miller-Rabin Test 参考wiki—— https://en.wikipedia.org/wiki/Miller–Rabin_primality_test其中a的选择:所以base可以查表,当n不够大时: private static readonly uint[][] TEST_BASE = { ...
2018-11-01 18:00:05 456
原创 【日记】Montgomery Modular Inverse
(r, k) = AlmMonInv(a, m) = (a^-1)(2 ^k) (mod m)/// <summary>/// 返回{x, k};x = <paramref name="value"/>−1 * 2^k (mod <paramref name="modulo"/>) /// if gcd(<paramref name="value...
2018-11-01 16:23:38 184
原创 【日记】Montgomery Moduluar Exponentiation
对正整数x, y, m, R, m',如果存在如下约束:0 <= x, y < R*mR = 2 ^ n, R > mgcd(m, 2) = 1R^-1*R - m'*m = 1则MonPro(x, y, m, m') = (xy)R^-1 (mod m)。function REDC(x, m, m') a <- (x (mod R))m' (...
2018-11-01 12:02:03 247
汉字笔顺共20842字(“壭亪寽兯嚸”这五个字没收)
2020-09-03
冈萨雷斯《数字图像处理》全家桶
2018-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人