This is my blog.
(未完待续)
此篇为基础数论,贴上模版,难以理解的附上数学推导公式。
gcd 最大公约数
|
|
lcm 最小公倍数
|
|
欧拉函数
看到一篇不错的博客,讲解了一些欧拉函数的性质。12345678910111213141516int eular(int x){ int res = x; for (int i =2; i *i<=x; i++) { if (x % i ==0) { res = res / i * (i -1); while (x % i ==0) x /= i; // 保证i一定是素数 } } if (x > 1) res = res / x * (x -1); return res ;}
容斥原理
假设只有三个,则为
\(p1+p2+p3-p1p2-p1p3-p2p3+p1p2*p3\)
可以知道总组合有\(2^n\)个,若该项个数为\(k\),则系数为\( (-1)^(k+1) \)
例题
求大于x且与p互质的第k个数
思路
每个数的因子可以用筛法筛出来。然后就是二分查找ans,容斥原理计算ans内有多少个与p互质的数。至于大于x嘛,只需用容斥算出小于等于x的与p互质的数有多少个。
代码
|
|
后记
数论比数学好玩!
转载请注明出处,谢谢。
愿 我是你的小太阳