约数,又称因数。整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
对于任意一个正整数N,都有 N=p1c1*p2c2...pmcm,其中p为质数。
={p1b1*p2b2*...pmbm|0<=bi<=ci}
f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)
=(c1+1)(c2+1)...(cm+1)
1)试除法。一个一个试看能否被整除。推论:N的约数个数最多为2√N个
1)试除
2)基本推论:i一定是i的倍数的约数
for(int i=1;i<=n;++i){ for(int j=1;j<=n/i;++j){ fac[i*j].push_back(i); } }
时间复杂度NlnN
3)例题1 反质数 题解
例题2 余数之和 题解
对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。此函数以其首名研究者欧拉命名(Euler‘s totient function)
对于素数p
当p|n时 φ(p*n)=φ(n)*p
否则 φ(p*n)=φ(n)*(p-1)
原文:https://www.cnblogs.com/clockwhite/p/12039044.html