数论
文章平均质量分 56
Sunshine_cfbsl
Nothing.
展开
-
SGU102 Coprimes
题目大意: 给出一个正整数N(1<=N<=10^4),求出不大于N并且和N互质的所有正整数的个数。 又是水题。。。枚举N范围内的所有正整数,通过gcd来算出两数是否互质,若不互质,把它的倍数全部筛掉,若互质,统计一下就可以了。 代码如下:/* ID: Sunshine_cfbsl LANG: C++ */ #include<cstdio> #include<原创 2016-08-06 22:20:52 · 430 阅读 · 0 评论 -
质因数分解的一些讨论(Pollard-Rho算法)
一类问题:对于一个整数n,将n进行质因数分解算法1:根据定义直接枚举,直接给出代码:void Decom(int n) { int i; vector<int> res; for(i = 2; i <= n; i++) { while(n%i == 0) { res.push_back(i); n /= i;原创 2016-09-12 13:34:07 · 7293 阅读 · 1 评论 -
POJ1811 Prime Test (Pollard-Rho算法)
显然,这么大的数据不能用朴素算法过。 需要用到一种叫做Pollard-Rho的算法。 Pollard-Rho算法戳这里看懂了就变成了裸题。。。 直接上代码:#include<cstdio> #include<algorithm> #include<vector> using namespace std;const int MAXN = 65; long long x[MAXN], ans;lo原创 2016-09-12 20:53:16 · 757 阅读 · 0 评论 -
Lucas定理与扩展Lucas
之前看了乘法逆元(详见除法取模与逆元),发现不能处理不互质的情况,于是去找方法,最后找到了Lucas定理。。。 虽然与期待中的不一样,但是还是非常有用的。(1)Lucas定理:若p为素数,则有: Cnm≡∏i=0kCnimi(modp)C_m^n \equiv \prod_{i=0}^kC_{m_i}^{n_i} \pmod p n=nkpk+nk−1pk−1+...+n0n = n_kp^k原创 2016-08-10 21:49:32 · 2946 阅读 · 9 评论 -
除法取模与逆元
我们经常在做题时会看到这样一句话:由于答案较大,请输出答案mod m的结果。(其中m一般为一个大质数) 我们经常会使用以下几个等式: (a+b)≡(amodm+bmodm)(modm)(a+b)\equiv (a\mod m + b\mod m) \pmod m (a−b)≡(amodm−bmodm+m)(modm)(a>b)(a-b)\equiv (a\mod m - b\mod m + m原创 2016-08-09 19:27:14 · 1889 阅读 · 0 评论 -
素数判定的一些讨论(Miller-Rabin算法)
很久没有写博客了。。。最近军训加开学,感觉刷题速度有降低,要补一补。 回归正题,正式进入数论阶段,讨论一下关于素数判定的那些事。 一类问题: 判定一个整数n(n>1)是否为素数。 算法1: 直接根据素数的定义枚举ii从22到(n−1)(n-1),如果n%i==0nn为合数。 时间复杂度:O(n)O(n) bool is_prime(int n) { int i;原创 2016-09-03 22:08:50 · 4121 阅读 · 0 评论 -
线性模方程求解
对于一些数论专题总是有些晕,还是要多做题(O_O)所谓线性模方程,就是形如ax≡b(modn) (a,x,b,n∈Z∗)ax\equiv b \pmod n\ (a,x,b,n\in Z^*)的方程。。已知a,b,需要求解最小的x值。方法如下:原方程等价于ax−ny=bax-ny = b ,令d=gcd(a,n)d = gcd(a, n)。如果bmodd≠0b \mod d \neq 0,则方程无解原创 2016-09-18 13:20:47 · 1327 阅读 · 0 评论