数论
文章平均质量分 89
harry1213812138
有任何问题可以评论,我会第一时间回复。
在下虽然菜,但是菜的认真。
展开
-
一篇数论 基础数论详解(质数筛、约数、欧拉定理、快速幂、逆元、组合数学、卡特兰数)
数论一、质数质数的定义:在大于1的整数中,只包含1和它本身两个约数的数称为质数,也称作素数。1、质数的判定(1)试除法:根据定义来判断最朴素的方法,时间复杂度O(n),代码如下:bool is_prime(int n){ if(n < 2) return false; for(int i = 2;i < n;i++) if(n % i == 0) return false; return true;}对此方法的优化:我们可以发现,一个数所有的约数都是成对出原创 2021-10-03 11:30:33 · 3071 阅读 · 7 评论 -
Lucas定理 原理、证明及代码模板
一、定理对于素数p,及正整数a、b,当求组合数CabC_a^bCab对p取余时,如果a和b很大(1≤b≤a≤1015)(1≤b≤a≤10^{15})(1≤b≤a≤1015),而p相对较小(1≤p≤105)(1≤p≤10^5)(1≤p≤105)时,我们用Lucas定理来求。结论:Cab≡Capbp⋅Ca%pb%pC_{a}^{b}\equiv C_{\frac ap}^{\frac bp}\cdot C_{a\%p}^{b\%p}Cab≡Cpapb⋅Ca%pb%p (mod p)二、证明首原创 2021-08-31 18:33:45 · 476 阅读 · 0 评论 -
费马小定理与欧拉定理 原理与证明
一、欧拉定理1、定义若a与n互质,则aφ(n)≡1a^{\varphi (n)} \equiv 1aφ(n)≡1 (mod n)。其中φ(n)\varphi (n)φ(n)指欧拉函数:小于n的正整数中与n互质的个数。2、证明我们假设n的质因子分别是:p1,p2,...,pφ(n)p_1,p_2,...,p_{\varphi(n)}p1,p2,...,pφ(n),记为序列1。若给每一项都乘a,得序列2:ap1,ap2,...,apφ(n)ap_1,ap_2,...,ap_{\varphi(n原创 2021-08-15 19:50:15 · 2712 阅读 · 1 评论 -
n条直线最多将平面分成几部分
n条直线最多将平面分成几部分1条直线:2部分2条直线:4部分3条直线:7部分4条直线:11部分…由此可见,有递推公式:当n = 1时,f[1] = 2当n > 1时,f[n] = f[n-1] + n为什么有这个递推公式呢当n > 1时,我们每增加一条线,为使分平面的块数最多,我们要将这条直线与之前的n-1条直线全部相交,这样会分的块数最多。同时这样增加的块数就是n。如下图:因此根据递推公式有通项公式:f[n] = (n2 + n + 2) / 2...原创 2020-11-30 21:08:45 · 9314 阅读 · 0 评论 -
小数化分数 思路及代码模板 c++实现
小数化分数将一个小数化成一个最简分数的模板,小数包含简单小数和循环小数。对于循环小数的输入我们将循环体用括号括起来表示。思路首先我们将小数部分的数化为分数;对于整数部分我们只需要将化好的分子加上整数乘分母即可。对于小数部分我们分成两类:①简单小数:对于简单小数我们只需要将小数部分的数全部看成整数做分子,然后分母就是10的位数次方(简单说就是小数部分有几位,分母就是1后面加几个0),然后再化简即可,化简操作可直接用gcd取最大公约数。举个例子:0.21的分子就是21,分母就是100(102)。②原创 2020-10-14 18:13:42 · 1612 阅读 · 0 评论 -
已知矩形三个顶点坐标,计算第四个点的坐标 C++实现
计算方法:①先用向量法找到互相垂直的两条边(互相垂直的两个向量点积为0)#include<iostream>using namespace std;const int N = 2010;typedef pair<int,int> PII;原创 2020-09-30 17:12:37 · 2923 阅读 · 0 评论 -
求10的10次方内素数的个数与素数和的模板
#include<bits/stdc++.h>using namespace std;typedef long long ll;ll check(ll v, ll n, ll ndr, ll nv) { return v >= ndr ? (n / v - 1) : (nv - v);}ll primenum(ll n) // O(n^(3/4)){ ll r = (ll)sqrt(n); ll ndr = n / r; assert(r*r <= n原创 2020-09-23 15:46:48 · 712 阅读 · 0 评论 -
数论之容斥原理 与经典例题
容斥原理容斥原理是对多个集合的一种计数方法。人们为了不重复、不遗漏地计数,想到了一个特别的计数方法,称为容斥原理。简单来说,某个事物有很多类,我们现在要计算A、B、C三类的和,那么总和=A类元素个数+B类元素个数+C类元素个数-既是A又是B类元素个数-既是B又是C类元素个数-既是A又是C类元素个数+既是A又是B又是C类元素个数。这样计算非常方便且不重不漏,我们用一个集合图直观的就能看出这个原理:普遍推广:要计算几个并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的大小,然原创 2020-08-31 10:09:21 · 4796 阅读 · 3 评论