1、a|b
性质:
(1)若a|b且a|c,则对任意x,y,有a|(xb+yc);
(2)若a|b且a|c,则a|c;
(3)设m!=0,则a|b,当且仅当ma|mb;
(4)若a|b且b|a,则a=±b;
带余除法:设a,b是两个正整数,且b!=0,则存在唯一的整数q和r,使a=qb+r(0<=r<|b|).
2、算术基本定理的推论
对于N=P1C1•P2C2•......•PmCm,则N的正约数集合可写成{P1b1•P2b2•......•Pmbm},其中0<=bi<=ci
N的正约数个数:(c1+1)•(c2+1)•......•(cm+1)
Ny :(yC1+1)•(yC2+1)•......•(yCm+1)
N的所有正约数的和:(1+P1+P12+......+P1C1)•(1+P2+P22+......+P2C2)•......•(1+Pm+Pm2+......+PmCm)
3、约数和
3.1 单个数约数和
时间复杂度:O(√n)
for(int i=1;i*i<=n;++i){
if(n%i==0){
f[++cnt]=i;
if(i!=n/i) f[++cnt]=n/i;
}
}
3.2 N个数约数和(打表)
时间复杂度:O(n√n)
vector<int> f[N];
for(int i=1;i<=n;++i)
for(int j=1;j<=n/i;++j)
f[i*j].push_back(i);
3.3 N个数约数和的和(整除分块)
时间复杂度:O(n)
(1)for(int i=1;i<=n;++i) ans+=(n/i*i);
(2)ll fun(ll x)
{
ll ans=0;
for(ll l=1,r;l<=x;l=r+1){
r=x/(x/l);
ans+=(r-l+1)*(x/l)*(l+r)/2;
}
}