不定期咕咕咕
n div i有2√n个取值
https://blog.csdn.net/gmh77/article/details/88142031
显然n div i最多只有2√n个取值,则s和g最多只有2√n个取值
对于≤√n的数可以直接存,处理也很方便,对于>√n的可以用n div x来存
n div a div b=n div (a*b)
来自https://blog.csdn.net/semiwaker/article/details/73822107
n div (n div x)=x (x≤√n)
设$n=ax+b(0≤b<x)$
$\left \lfloor \frac{n}{\left \lfloor \frac{n}{x} \right \rfloor} \right \rfloor=x$
$\left \lfloor \frac{ax+b}{\left \lfloor \frac{ax+b}{x} \right \rfloor} \right \rfloor=x$
$\left \lfloor \frac{ax+b}{a} \right \rfloor=x$
$\left \lfloor x+\frac{b}{a} \right \rfloor=x$
如果$\frac{b}{a}<1$那么结论就可以成立
即$a>b$
因为$n=ax+b$
所以$a=\left \lfloor \frac{n}{x} \right \rfloor$,$b=n;mod;x$
因为$x \leqslant sqrt(n)$,所以$\left \lfloor \frac{n}{x} \right \rfloor \geqslant sqrt(n)$,即$a\geqslant sqrt(n)$
因为$b=n;mod;x$,所以$b<x$,即$b<sqrt(n)$
所以$a\geqslant sqrt(n)>b$,即当$x \leqslant sqrt(n)$时原式成立
(用于min25筛)
平方求和公式
不是求平方和
求$\sum_{i=1}^{n}{i^2}$
根据高斯求和公式,$\sum_{i=1}^{n}{i^2}=\sum_{i=1}^{n}{\frac{1}{2}(i+n)(n-i+1)}$(i^2^=i*i,i出现了i次)
$=\frac{1}{2}\sum_{i=1}^{n}{n^2-i^2+i+n}$
$=\frac{1}{2}(n^2(n+1)+\frac{1}{2}(1+n)n-\sum_{i=1}^{n}{i^2})$
$=\frac{1}{2}(n(n+1)(n+\frac{1}{2})-\sum_{i=1}^{n}{i^2})$
联立求解
$\sum_{i=1}^{n}{i^2}=\frac{1}{2}(n(n+1)(n+\frac{1}{2})-\sum_{i=1}^{n}{i^2})$
$2\sum_{i=1}^{n}{i^2}=n(n+1)(n+\frac{1}{2})-\sum_{i=1}^{n}{i^2}$
$3\sum_{i=1}^{n}{i^2}=n(n+1)(n+\frac{1}{2})$
$\sum_{i=1}^{n}{i^2}=\frac{n(n+1)(n+\frac{1}{2})}{3}$
$\sum_{i=1}^{n}{i^2}=\frac{n(n+1)(2n+1)}{6}$
调和级数公式
https://blog.csdn.net/gmh77/article/details/98226712
$\sum_{i=1}^{n}{\frac{1}{i}}=\ln(n)+\gamma+X_n$(γ为欧拉常数,当n趋近与无穷大时X~n~约等于0)
$\sum_{i=1}^{n}{\frac{1}{i}}=\int_{1}^{n+1}{\frac{1}{\left \lfloor x \right \rfloor}}dx$
$=\int_{1}^{n+1}{\frac{1}{x}}dx+\int_{1}^{n+1}{(\frac{1}{\left \lfloor x \right \rfloor}-\frac{1}{x})}dx$
$=\ln(n+1)+\int_{1}^{n+1}{(\frac{1}{\left \lfloor x \right \rfloor}-\frac{1}{x})}dx$
$=\ln(n)+\gamma+X_n$(n+1≈∞)
$\approx \ln(n)+\gamma$(n+1≈∞)
欧拉常数计算
#include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> #define fo(a,b,c) for (a=b; a<=c; a++) #define fd(a,b,c) for (a=b; a>=c; a--) #define E 0.0001 using namespace std; long double euler,i; int main() { i=1; while (i<=10000) { euler+=(1.0/floor(i)-1.0/i); i+=E; } printf("%0.10Lf\n",euler*E); }
算得γ=0.5771351607
斐波那契数列性质
https://blog.csdn.net/gmh77/article/details/98583079
①$gcd(F(n-1),F(n))=1$
②$F(n)=F(m+1)F(n-m)+F(m)F(n-m-1)$
③$gcd(F(n),F(m))=F(gcd(n,m)$
证明:
①
反证,若$gcd(F(n-1),F(n))=a$(a>1),那么a|F(n-1)、a|F(n)
因为F(n)=F(n-1)+F(n-2),则a|F(n-2)
如此类推,发现a|F(1)
因为a>1且F(1)=1,所以不成立
②
归纳:已证得$F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)$,边界为$F(n)=F(2)F(n-1)+F(1)F(n-2)$(m=1)
$F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)$
$F(n)=F(m)F(n-m)+F(m)F(n-m-1)+F(m-1)F(n-m)$
$F(n)=(F(m)+F(m-1))F(n-m)+F(m)F(n-m-1)$
$F(n)=F(m+1)F(n-m)+F(m)F(n-m-1)$
③
$gcd(F(n),F(m))=gcd(F(m+1)F(n-m)+F(m)F(n-m-1),F(m))$
$gcd(F(n),F(m))=gcd((F(m+1)F(n-m)+F(m)F(n-m-1)); mod ;F(m),F(m))$
因为$gcd(a*b,c)=gcd(b,c)$(ac互质)且$gcd(F(m),F(m+1))=1$
$gcd(F(n),F(m))=gcd(F(n-m),F(m))$
可以发现上面的式子类似求gcd
因为$gcd(a,b)=gcd(gcd(a,b),0)$
类比可得$gcd(F(n),F(m))=gcd(F(gcd(n,m)),F(0))=F(gcd(n,m))$(F(0)=0)
(这个式子对多个数也是成立的)
参考&其它性质:https://www.cnblogs.com/Milkor/p/4734763.html
欧拉函数性质
https://blog.csdn.net/gmh77/article/details/99066792
$n=\sum_{d|n}{\varphi(d)}$
设$F(n)=\sum_{d|n}{\varphi(d)}$,则
$F(n)F(m)=\sum_{i|n}{\varphi(i)}\sum_{j|m}{\varphi(j)}$(nm互质)
$=\sum_{i|n}{\sum_{j|m}{\varphi(ij)}}$
$=F(nm)$
所以证得F(n)是积性函数
求$F(p^k)$(p为质数)
$F(p^k)=\sum_{i=0}^{k}{\varphi(p^i)}$
$=(\sum_{i=1}^{k}{p^i(1-\frac{1}{p})})+1$
$=(\sum_{i=1}^{k}{p^{i-1}(p-1)})+1$
$=(\sum_{i=1}^{k}{p^i-p^{i-1}})+1$
$=p^k-p^0+1$
$=p^k$
由于F(n)是积性函数,且F(p^k^)=p^k^,所以可以推得F(n)=n(对于任意n)
所以
$F(n)=\sum_{d|n}{\varphi(d)}$
$n=\sum_{d|n}{\varphi(d)}$
参考&其它性质:https://blog.csdn.net/liuzibujian/article/details/81086324