首页 > 其他分享 >数论

数论

时间:2024-06-06 21:01:11浏览次数:10  
标签:lfloor right gcd 数论 dfrac rfloor left

数论

扩展欧几里得(\(exgcd\))

用于求解不定方程\(ax+by=k\)且\(gcd(a, b)|k\)的解。

令\(ax+by=gcd(a,b)\)。求\(k\)的话只需要将\(x,y\)乘上\(\dfrac{k}{gcd(a,b)}\)。

\[gcd(a, b) = gcd(b, a\%b) \]

\[ax_1+by_1=bx_2+(a-\lfloor \dfrac{a}{b}\rfloor \times b)y_2 \]

\[ax_1+by_1=bx_2+ay_2-\lfloor \dfrac{a}{b}\rfloor by_2 \]

\[ax_1+by_1=ay_2+b(x_2-\lfloor \dfrac{a}{b}\rfloor y_2) \]

\[\begin{cases}x_{1}=y_{2}\\ y_{1}=x_{2}-\lfloor \dfrac{a}{b}\rfloor y_{2}\end{cases}\]

void exgcd(int a, int b, int &x, int &y){
	if(!b){x = 1, y = 0; return;}
	exgcd(b, a % b, x, y);
	int p = x;
	x = y, y = p - (a / b) * y;
	return;
}

然后解得一组解\(x_1, y_1\),则有

\[ax_1+by_1=gcd(a,b) \]

\[d \in Q那么a(x_1+db)+b(y_1-da)=gcd(a,b) \]

于是我们就有了新解\(x_2=(x_1+db),y_2=(y_1-da)\)。

整除分块

用于快速计算一些含有除法向下取整的和式(即形如$\sum ^{n}_{i=1}f\left( i\right) g( \lfloor \dfrac{n}{i} \rfloor) \()。时间复杂度\)O(\sqrt{n})$。

我们考虑将数\(1\sim n\)的数\(x\)按照\(\lfloor \dfrac{n}{x} \rfloor\)的值分块。

对于\(l\)所在块的最右端\(r, r=\left\lfloor \dfrac{n}{\left\lfloor\frac{n}{l}\right\rfloor}\right\rfloor\)。

\(\left\lfloor\dfrac{n}{l}\right\rfloor\)表示能将\(n\)最多分为多少个长为\(l\)的块。

\(\left\lfloor \dfrac{n}{\left\lfloor\frac{n}{l}\right\rfloor}\right\rfloor\)表示能将\(n\)分为\(\left\lfloor\dfrac{n}{l}\right\rfloor\)个块的最长长度。

int l = 1, r;
while(l <= n){
	r = x / (x / l);
	l = r + 1;
}

数论函数:

定义域是正整数的函数。

狄利克雷卷积:

\[h\left( x\right) =\sum _{ d| x}f\left( d\right) g\left( \dfrac{x}{d}\right) =\sum _{ab=x}f\left( a\right) g\left( b\right) \]

积性函数:

若函数\(f(n)\)满足\(f(1)=1\)且 \(\forall x,y\in\mathbf{N}^*,~(x,y)=1\) 都有 \(f(xy)=f(x)f(y)\),则\(f(n)\)为 积性函数

若函数\(f(n)\)满足\(f(1)=1\)且 \(\forall x,y\in\mathbf{N}^*\) 都有 \(f(xy)=f(x)f(y)\),则 \(f(n)\) 为 完全积性函数

一些定义:

单位函数:

\(\varepsilon(n)=[n=1]\)。(完全积性)

恒等函数:

\(\operatorname{id}_k(n)=n^k,\operatorname{id}_{1}(n)\) 通常简记作 \(\operatorname{id}(n)\)。(完全积性)

常数函数:

\(1(n)=1\)。(完全积性)

除数函数:

\(\sigma_{k}(n)=\sum_{d\mid n}d^{k}\)。\(\sigma_{0}(n)\) 通常简记作 \(d(n)\) 或 \(\tau(n)\),\(\sigma_{1}(n)\) 通常简记作 \(\sigma(n)\)。

欧拉函数:

\(\varphi(n)=\sum_{i=1}^n[(i,n)=1]\)

莫比乌斯函数:

\(\mu(n)=\begin{cases}1&n=1\\0&\exists d>1,d^{2}\mid n\\(-1)^{\omega(n)}&\text{otherwise}\end{cases}\)

其中 \(\omega(n)\) 表示 \(n\) 的本质不同质因子个数,它是一个加性函数。

重要性质:

\[\varphi \ast 1=id \]

\[id\ast \mu =\varphi \]

\[\sum_{d\mid n}\mu(d)= \begin{cases} 1&n=1\\ 0&n\neq 1\\ \end{cases}\]

即 \(\sum_{d\mid n}\mu(d)=\varepsilon(n),\mu * 1 =\varepsilon\)

常用转换:

\[\displaystyle [\gcd(i,j)=1]=\sum_{d\mid\gcd(i,j)}\mu(d) \]

mu[1] = 1;
for(int i = 2; i < N; i++){
	if(!vis[i]) mu[i] = -1, p[++tot] = i;
	for(int j = 1; j <= tot && i * p[j] < N; j++){
		vis[i * p[j]] = 1;
		mu[i * p[j]] = -mu[i];
		if(i % p[j] == 0){
			mu[i * p[j]] = 0;
			break;
		}
	}
}

标签:lfloor,right,gcd,数论,dfrac,rfloor,left
From: https://www.cnblogs.com/Peng1984729/p/18236007

相关文章

  • 算法学习笔记(21):数论分块
    数论分块大部分内容来源于OI-WIKI引理1:\(\\foralla,b,c\in\mathbb{Z},\left\lfloor\frac{a}{bc}\right\rfloor=\left\lfloor\frac{\left\lfloor\frac{a}{b}\right\rfloor}{c}\right\rfloor\)引理2:\(\lfloor\frac{n}{i}\rfloor\)的取值有\(O(\sqrtn)\......
  • 部分数论学习笔记
    数论分块若可以\(O(1)\)计算\(f(r)-f(l)\),那么就可以\(O(\sqrtn)\)计算\(\sum^n_{i=1}f(i)(g\lfloor\frac{n}{i}\rfloor)\)。关于\(l,r\)的含义与计算:含义:\(\forallx\in[l,r],\lfloor\frac{n}{x}\rfloor\)相等计算:刚开始\(l\)肯定为\(1\),如何理解\(r=......
  • 【笔记】数论基础
    乘法逆元若\(a\timesb\equiv1(\bmod\c)\),且\(\gcd(a,b)=1\),那么我们定义\(a\)为\(b\)的逆元,也可以称\(a\)是\(b\)在\(\bmod\c\)意义下的倒数。费马小定理对于质数\(p\)和任意整数\(a\),有\(a^p\equiva(\bmod\p)\)。反之,若\(a^p\equiv......
  • 算法随笔——数论之莫比乌斯反演
    链接链接2链接3链接4前置知识:数论分块可以求形如:\(\sumf(i)g(\left\lfloorn/i\right\rfloor)\)的东西。原理如下:比如说求$\sum_{i=1}^{10}\left\lfloor10/i\right\rfloor$得到:10532211111可以发现有一些块的数值是一样的。具体一点可以发现\([l......
  • 证明欧几里得定理(这是一位刚学数论的初三生发明的方法)
    欧几里得定理:gcd(a,b)=......
  • 数论
    数学是科学的女皇,数论是数学的女皇。——高斯\[\Huge{\Large{}}\mathcal{Q\!\!\!X}\]\(\text{Gcd}\&\text{Lcm}\)最大公因数和最小公倍数,基本上都是一些杂题。这里有一个性质:\[\text{lcm}(a,b)=\frac{ab}{\gcd{(a,b)}}\]这个东西是可以证明的。设有可重集合\(A,B\)......
  • 数论分块
    有点菜,现在才会。之前好多篇都烂尾了,这篇不能了。数论分块往往适合于带有向下取整的题目,即求\(\sumf(i)g(\lfloor\frac{n}{i}\rfloor)\)的值。当经过某些处理后可以\(O(1)\)求出\(f(r)-f(l)\)的值时,数论分块可以\(O(\sqrt{n})\)求出上述式子的值。向下取整\(\lfloor......
  • 暑假数论
    同步发表前言因为\(2025\)届暑假的时候tad疯狂的在讲课,而且用了很多高端的东西和证明导致我在暑假的时候数论板块几乎没有听懂,所以我决定写下这篇文章不让当时的悲剧重演。本篇文章都只讲结论,因为证明分复杂而且没有什么用,在暑假记住结论就好了,至于证明的坑后面会填。欧拉......
  • 【CodeChef】Origin(数论)
    题目大意:\(f(x)=\begin{cases}x,1\lex\le9\\f(x的各数位之和),x>9\\\end{cases}\)求\(\sum_{i=1}^{n}f(i)\)。根据打表找规律,我们会发现\(f(x)=(x-1)\bmod9+1\)。所以\(\sum_{i=1}^{n}f(i)\)\(=\sum_{i=1}^{\lfloor\frac{n}{9}\rfloor\cdot9}f(x)+\sum_{i=\l......
  • [数论] 二项式反演
    菜就多练,输不起就别玩,不会就是不会。二项式推论\(1.\)\(\tbinom{n}{m}=\tbinom{n}{n-m}\)\(2.\)\(\tbinom{n}{m}=\frac{n}{m}\tbinom{n-1}{m-1}\)\(3.\)\(\sum\limits_{i=0}^nC_n^i=2^n\)证明:拆\((1+1)^n\)\(4.\)\(\sum\limits_{i=0}^n(-1)^iC_n^i=0\)特殊的,......