目录
1.数论函数
的取值范围:定义域
的取值范围:值域
数论函数一般来说定义域是正整数,除非特殊要求
函数有以下几种类型:
1.普通函数
2.完全积性函数
对于任意两个正整数 n,m,满足
3.积性函数
对于两个互质的正整数n,m,满足
4.常数函数
5.单位函数
如果表达式为真,则等于1,反之等于0
单位函数也是一种完全积性函数
2.欧拉函数
(n):表示1到n中与n互质的个数
表示为
也可表示为:
(n)=
容斥原理:(奇加偶减)
可表示为
可表示为:
证明:
1到n中p的倍数,有
1到n中q的倍数,有
一共有:
则1到n中剩余的数即为互质的数
(n)=n-( )
=
即 (n)=
性质:
1. (n)=n-1 (n为质数)
2.若 ,(n)=(p为质数)
3.(2n)=(n) (n为奇数)
4. (d)=n ,(d|n)
5, 若p|n且 ,则
(n)=()p
c++求欧拉函数:
void ola_prime(int n){
vis[1]=1;
for(int i=2;i<=n;i++){
if(!vis[i]){
prime[++cnt]=i;
f[i]=i-1;
}
for(int j=1;j<=cnt&&i*prime[j]<=n;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0){
f[i*prime[j]]=f[i]*prime[j];
break;
}
f[i*prime[j]]=f[i]*f[prime[j]];
}
}
}
long long n;
cin>>n;
long long ans=n;
for(long long i=2;i<=sqrt(n);i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0) n/=i;
}
}
if(n>1) ans=ans/n*(n-1);
cout<<ans<<"\n";