数论培训day 2下午【数论】

逆元

数论培训day 2下午【数论】
欧拉定理的证明
数论培训day 2下午【数论】
线性求逆元
数论培训day 2下午【数论】
解决
数论培训day 2下午【数论】这样只要前面求出(p mod i)的逆元就能求出i的逆元

练习
数论培训day 2下午【数论】
解决
前面的算法在这道题面前一点用不管,只能用暴力,但是可以用BSGS算法优化暴力

数论培训day 2下午【数论】
代码实现

int size;

bool erfen(int x)
{
	int l=0,r=size;
	while (l+1!=r)
	{
		int m=(l+r)>>1;
		if (z[m]>=x) r=m;
		else l=m;
	}
	return z[r]==x;
}

int bsgs(int a,int b,int p)
{
	size = sqrt(p);
	
	int nowv=1;
	for (int i=1;i<=size;i++)
	{
		nowv = (long long)nowv * a%p;
		z[i] = nowv;
		if (z[i] == b) return i;
	}
	sort(z+1,z+size+1);
	for (int i=2;(i-1)*size+1 <= p;i++)
	{
		int y = (long long)b * kuaisumi(kuaisumi(a,size*(i-1),p),p-2,p);
		if (erfen(y))
		{
			for (int j=(i-1)*size+1;j<=i*size;j++)
				if (kuaisimi(a,j,p) == b) return j;
		}
	}
	return -1;
}

积性函数

定义
数论培训day 2下午【数论】
常见积性函数
数论培训day 2下午【数论】
证明
不变函数 显然

欧拉函数
数论培训day 2下午【数论】

莫比乌斯函数
数论培训day 2下午【数论】

莫比乌斯反演
数论培训day 2下午【数论】
证明
数论培训day 2下午【数论】
数论培训day 2下午【数论】