- 博客(5)
- 收藏
- 关注
原创 pollard_rho质因素分解(需要用到Miller-Rabin素数测试)
代码如下://**********************************************// pollard_rho 算法进行质因素分解//////*********************************************long long factor[100];//质因素分解结果(刚返回时时无序的)int tol;//质因素的个数,编号0~to
2016-01-31 21:05:54 3626
原创 Miller-Rabin素数测试(被测数可以是小于2^63的正整数)
首先改算法原理是基于费马小定理: 假如p是素数,且gcd(a,p)=1,那么a^(p-1)%p=1推论: 若p是素数且a是正整数,那么a^p%p=a定义:令a是一正整数,若n是合数且满足a^n%n=a,则n称为以a为基的伪素数素数测试原理:取多个a为底,若n都是以a为基的伪素数,则可以近似认为n为素数。取多个底进行试验,次数越多,n为素数的概率就越大typedef
2016-01-31 20:37:53 2434
原创 扩展Baby Step Giant Step (解(a^x)%n=b,其中c没有限制)
#define N 1000000struct Node{ int idx; int val;}baby[N];bool cmp(Node n1,Node n2){ return n1.val!=n2.val?n1.val<n2.val:n1.idx<n2.idx;}int gcd(int a,int b){ return b==0?a:gcd(b,a%b
2016-01-26 11:00:18 2218 1
原创 Baby-Step Giant-Step 解高次同余方程(形如(a^x)%n=b,其中n为素数)
//baby_step giant_step// a^x = b (mod n) n为素数,a,b < n// 求解上式 0<=x < n的解#define MOD 76543int hs[MOD],head[MOD],next[MOD],id[MOD],top;void insert(int x,int y) { int k = x%MOD; hs[top] = x,
2016-01-26 00:42:44 893
原创 素数的分布(素数定理),求1~10^n 素数个数的位数
素数定理:素数有无穷多个,能估计出一个小于正实数x的素数有多少个,并用π(x)来表示,这就是素数定理定理内容: 随着x的增长,π(x)/(x/lnx)=1 具体数据见下表:n 1e3 1e4 1e5 1e6 1e7π(n) 168 1229 9892 78498
2016-01-26 00:03:08 8489 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人