约数个数定理:
定理简证:
例题:
正约数?
分解质因数378000=2^4×3^3×5^3×7^1
约数和定理:
分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,
定理证明:
分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,
乘法原理可知它们的和为
例题:
所有因子个数τ(n)与所有因子的和σ(n)都是乘(积)性函数。
定义1:因子和函数σ定义为整数n的所有正因子之和,记为σ(n)。
定义2:因子个数函数τ定义为正整数n的所有正因子个数,记为τ(n)。
定理1:设p是一个素数,a是一个正整数,那么
σ(n)=1+p+p^2+……+p^a=【p^(a+1)-1】/(p-1)
τ(n)=a+1
定理2:设正整数n有素因子分解 n =(p1^α1)*(p2^α2)*(p3^α3)* ……. *(pk^αk),那么
σ(n)=【(p1^α1)-1】/(p1-1) * 【(p2^α2)-1】/(p2-1) * ….. *【(pk^αk)-1】/(pk-1)
τ(n)=(α1+1)*(α2+1)*(α3+1)*……*(αk+1)
求因子个数:
int prime[maxn],nprime;
int vis[maxn];
void getprime(){
nprime = 0;
memset(vis,0,sizeof(vis));
for(int i = 2; i <= 450; i++){
int t = 450/i;
for(int j = 2; j <=t; j++)
vis[i*j] = 1;
}
for(int i = 2; i <= 450; i++){
if(!vis[i])
prime[nprime++] = i;
}
}
int factor_count(int n){
int ans = 1,sum;
int k = sqrt(n*1.0);
for(int i = 0; prime[i] < k; i++){
if(n % prime[i] == 0){
sum = 0;
while(n % prime[i] == 0){
sum++;
n /= prime[i];
}
ans *= (a+1);
}
}
if(n > 1)
ans *= 2;
return ans;
}
求因子和:
int prime[maxn],nprime;
int vis[maxn];
void getprime(){
nprime = 0;
memset(vis,0,sizeof(vis));
for(int i = 2; i <= 450; i++){
int t = 450/i;
for(int j = 2; j <=t; j++)
vis[i*j] = 1;
}
for(int i = 2; i <= 450; i++){
if(!vis[i])
prime[nprime++] = i;
}
}
int pow_mod(int a,int n,int MOD){
int ans = 1;
while(n){
if(n&1)
ans = (ans*a)%MOD;
n >>= 1;
a = (a*a)%MOD;
}
return ans;
}
int factor_sum(int n){
int ans = 1,sum;
int k = sqrt(n*1.0);
for(int i = 0; prime[i] < k; i++){
if(n % prime[i] == 0){
sum = 0;
while(n%prime[i] == 0){
sum++;
n /= prime[i];
}
ans *= (pow_mod(prime[i],sum+1,MOD)-1)/(prime[i]-1);
}
}
if(n > 1)
ans *= ans(n*n-1)/(n-1);
return ans;
}
今天的文章约数定理(约数个数定理,约束和定理)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/29593.html