数论
文章平均质量分 55
学习数论,以洛谷为题源
是饿梦啊
喜欢算法,喜欢东野圭吾
展开
-
线性筛法(C++)
我终于终于终于........来了。我们今天直接上干货------干筛法。我们首先考虑这样一个事,一个数如果是质数,那他的倍数一定是合数,我们根据这一结论筛掉不必要的判断。int primes(int n){ st[1] = true; for(int i=2;i<=n;i++) { if(!st[i])prime[++k] = i; //如果这个数没有筛过,就把它放入数组 for(int j=1;prime[j]<=n/i;j++)//我们遍历素数数组,将全原创 2021-09-21 09:48:34 · 4771 阅读 · 13 评论 -
欧几里得算法&扩展欧几里得算法
欧几里得算法:“欧几里得算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。”这里我们考虑一个问题:辗转相除法需要大数除小数,那我们这里是不是需要一个判断呢;其实是不需要的,我们可以发现公式中是默认a>b的,这里我们不妨假设a<b;gcd(a,b) = gcd(b,a%b),由于a<b, a%b =a, gcd(b,a%b) = gcd(b,a),这样也就保证了函原创 2021-08-27 02:08:33 · 265 阅读 · 0 评论 -
中国剩余定理(孙子定理)
《孙子算经》中有这样一个问题有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数是多少。用现代语言来解释的话,其实这是一个一元线性同余方程组问题: 。。。求x的值。中国剩余定理:假设整数m1,m2, ... ,mn两两互质,则对任意的整数:a1,a2, ... ,an,方程组有解,并且通解可以表示为:是在 mod下的逆元(可以使用exgcd求得)通解:...原创 2021-09-01 16:40:06 · 1089 阅读 · 0 评论 -
快速幂算法
最近学习数论,最先接触的就是快速幂了这里我们跟这个题目一起巩固一下学习成果吧求:a^b mod m (b<1e18)我们先来看看代码:#include<bits/stdc++.h>using namespace std;int quick_pow(int a,int b,int mod){ int ret = 1;//返回结果 while(b) { if(b&1)//将b转化成二进制和1进行与运算 ret = ret *a %mod;//原创 2021-07-17 13:26:08 · 150 阅读 · 0 评论 -
排列组合(卢卡斯定理)
终终终.......于要对组合数学下手了我们来看一下这个(在a个苹果中选出b个苹果)根据以上两种情况:我们可以得到这个递推式:我们知道,那么任何一个都可以由更小的递推出来,直接上代码:void init(){ for (int i =0; i < N; i ++ ) { for (int j = 0; j <= i; j ++ ) { if(!j)c[i][j] = 1; ..原创 2021-09-08 15:49:05 · 263 阅读 · 0 评论 -
高斯消元(C++)
高斯消元是线性代数中的重要算法,常用于解决线性方程组。也可以用来求矩阵的逆等问题。咱们先来回顾一下初等行列变换1.将某一行乘上一个非零数,解不变2.交换某两行,解不变3.将某一行的若干倍加到另一行,解不变算法步骤:1.枚举每一列,找到绝对值最大的一行2.将该行和第一行交换3.将该行行首置为一4.将下面所有行第 i 列置为零我们来模拟一个样例:最后我们就得到了阶梯型矩阵了。但是还没有结束,最后我们还需要将矩阵倒着减一遍就可以了(也叫回带...原创 2021-09-03 14:23:18 · 3798 阅读 · 3 评论 -
欧拉函数、欧拉定理、费马小定理
欧拉定理:设 n ,m ∈ N+ ,gcd(n,m) = 1 , 则 ≡ 1(mod m);我们先来看一个欧拉函数 φ(n):对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目.当n为质数时,φ(n) = n - 1;根据质因数分解:N =费马小定理:根据欧拉定理,若m为质数,则 n^(m-1)≡ 1(mod m);...原创 2021-08-26 20:25:31 · 235 阅读 · 0 评论 -
乘法逆元和线性同余方程
乘法逆元通常说的是模意义下的乘法逆元,ax ≡ 1(mod b)则 x 称为 a mod b 的逆元洛谷:https://www.luogu.com.cn/problem/P3811我们首先考虑扩展欧几里得算法:ax + by = gcd (a,b);我们变换乘法逆元的公式:ax ≡ 1 (mod b)(ax) % b = 1ax - by = 1这个形式看着是不是很熟悉咱们再来回顾一下扩展欧几里得算法:int exgcd(int a,int b,int &am...原创 2021-08-28 00:38:51 · 344 阅读 · 0 评论