不定期更新(×)
定期不更新(√)
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}
ight
floor}
ight
floor=x)
(left lfloor frac{ax+b}{left lfloor frac{ax+b}{x}
ight
floor}
ight
floor=x)
(left lfloor frac{ax+b}{a}
ight
floor=x)
(left lfloor x+frac{b}{a}
ight
floor=x)
如果(frac{b}{a}<1)那么结论就可以成立
即(a>b)
因为(n=ax+b)
所以(a=left lfloor frac{n}{x}
ight
floor),(b=n;mod;x)
因为(x leqslant sqrt(n)),所以(left lfloor frac{n}{x}
ight
floor geqslant sqrt(n)),即(ageqslant sqrt(n))
因为(b=n;mod;x),所以(b<x),即(b<sqrt(n))
所以(ageqslant 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}))
(2sum_{i=1}^{n}{i^2}=n(n+1)(n+frac{1}{2})-sum_{i=1}^{n}{i^2})
(3sum_{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
ight
floor}}dx)
(=int_{1}^{n+1}{frac{1}{x}}dx+int_{1}^{n+1}{(frac{1}{left lfloor x
ight
floor}-frac{1}{x})}dx)
(=ln(n+1)+int_{1}^{n+1}{(frac{1}{left lfloor x
ight
floor}-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
",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(i*j)}})
(=F(n*m))
所以证得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
(prod_{i=0}^{p-1}{(x-i)}=x^p-x;(mod;p) ; p in prime)
时隔六个月我又更了
大概是因为点值相同所以等价
具体证明:https://www.cnblogs.com/Dup4/p/10750749.html
(prod{frac{1}{x^2}}=frac{pi^2}{6})
有这条式子但是不会证
(sum_{gcd(i,n)=1}i=frac{1}{2}varphi(n)n)
当n>2时若gcd(n,i)=1,则gcd(n,n-i)=1
那么gcd=1的会成对存在,有phi(n)/2对,每对相加为n
n=2时刚好满足,n=1要特判
(sum_{i=1}^{k}{iinom{k}{i}}=2^{k-1}k)
(iinom{k}{i}=i*frac{k!}{i!(k-i)!}=k*frac{(k-1)!}{(i-1)!(k-i)!}=inom{k-1}{i-1})
(sigma_0(nm)=sum_{i|n} sum_{j|m} [(i,j)=1])
σ0是约数个数
每个因子p(n中a1,m中a2)是独立的,因此等价于算了(a1+1)+(a2+1)-1=a1+a2+1次,刚好是(sigma_0)的计算方法