积性函数(求欧拉函数和莫比乌斯函数的值)
摘要:利用素数筛法求欧拉函数和莫比乌斯函数的值: 如果函数f满足gcd(a,b)=1时,有f(ab)=f(a)*f(b),则f叫作积性函数 如果取消互质的条件,则叫完全积性函数。 前置知识: 1.欧拉函数:φ(n)表示1~n中与n互质的数的个数 计算公式为:φ(n)=n*(1-1/p1)*(1-1/p2)
阅读全文
posted @
2020-03-31 15:26
Allen_lml
阅读(281)
推荐(1) 编辑
素数筛
摘要:1.(nlogn): bool not_prime[2333]=false; //把非质数都设为false,如果not_prime为false,则是质数,为true,则不是质数 not_prime[1]=true; for(int a=2;a<=n;a++) for(int b=a+a;b<=n;b
阅读全文
posted @
2020-03-29 15:20
Allen_lml
阅读(151)
推荐(1) 编辑
exgcd(扩展欧几里得)
摘要:给定a,b,设g=gcd(a,b),求x,y满足x*a+y*b=g(x,y∈Z) 本方法用的是辗转相除的思想。 设(x+t)*a+(y+r)*b=g 只要t=k*b/gcd(a,b),r=-k*a/gcd(a,b)就满足等式 通解为:(x+k*b/gcd(a,b),y-k*b/gcd(a,b)).
阅读全文
posted @
2020-03-24 16:07
Allen_lml
阅读(161)
推荐(1) 编辑
线性求逆元(简略数学证明)
摘要:求1~n所有数的逆元: 假设1~i-1的逆元已求出,设p÷i=d……r(商d余r),则p=i*d+r。其中r=p%i。 对p=i*d+r,等式两边同时%p,得到0=(i*d+r)%p。 即为0≡i*d+r(mod p)(同余有一条性质:如果a≡b(mod m),x≡y(mod m),则有ax≡by(
阅读全文
posted @
2020-03-24 14:56
Allen_lml
阅读(268)
推荐(1) 编辑
Miller-Rabin素性测试(判定素数)
摘要:若n为素数,取a<n,设n-1=d*2^r,则要么a^d≡1(mod n),要么∃0≤i<r,s.t.(s.t.是满足或使得的意思)a^(d*2^i)≡-1(mod n). 思路:找k个数,全部进行上述两个测试(至少满足一个),若都能通过测试,则可以认为n是素数。 //该方法存在一定的问题,当然,出
阅读全文
posted @
2020-03-23 21:34
Allen_lml
阅读(297)
推荐(1) 编辑
逆元(摘于https://blog.csdn.net/li1615882553/article/details/80001473)
摘要:逆元定义逆元和我们平时所说的倒数是有一定的区别的,我们平时所说的倒数是指:a*(1/a) = 1,那么逆元和倒数之间的区别就是:假设x是a的逆元,那么 a * x = 1(mod p),也就是只多了一个取余的操作,这个取余的操作,就会保证a的逆元不一定只是a的倒数。那么我们的逆元有什么作用呢? 并且
阅读全文
posted @
2020-03-22 21:00
Allen_lml
阅读(179)
推荐(1) 编辑
矩阵快速幂代码(只有代码)
摘要://矩阵快速幂: struct matrix { int n,m; int z[233][233]; matrix() { n=m=0; memset(z,0,sizeof(z)); } }; matrix operator*(const matrix &a,const matrix &b) { m
阅读全文
posted @
2020-03-20 21:55
Allen_lml
阅读(235)
推荐(1) 编辑
高斯消元
摘要:算法分析 如果给定一个形如以下式子的多元方程式
{2x+y−z=8−3x−y+2z=11−2x+y+2z=−1⎩⎪⎨⎪⎧2x+y−z=8−3x−y+2z=11−2x+y+2z=−1 我们要首先提出各项的系数 因为我们知道,高斯消元其实只跟
阅读全文
posted @
2020-03-20 19:50
Allen_lml
阅读(155)
推荐(1) 编辑
逻辑运算符之优先级&&and、or
摘要:not> and> or And运算:中文叫与运算True And True 结果为 TrueTrue And False 结果为 FalseFalse And True 结果为 FalseFalse And False 结果为 FalseOr运算:中文叫或运算True Or True 结果为 Tr
阅读全文
posted @
2020-03-17 15:18
Allen_lml
阅读(2318)
推荐(1) 编辑
康托展开
摘要:X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0!其中, a[i]为整数,并且0 <= a[i] <= i, 0 <= i < n, 表示当前未出现的的元素中排第几个,这就是康托展开。 例如有3个数(1,2,3),则其排列组合及其相应的康托
阅读全文
posted @
2020-03-03 10:47
Allen_lml
阅读(97)
推荐(1) 编辑