1
1
1~
N
N
N中与
N
N
N互质的数的个数被成为欧拉函数,记为
φ
(
N
)
\varphi(N)
φ(N)。
在算数基本定理中,
N
=
p
1
c
1
p
2
c
2
.
.
.
p
m
c
m
(
∀
p
i
皆
为
质
数
)
N=p_1^{c_1}p_2^{c_2}...p_m^{c_m}(\forall p_i皆为质数)
N=p1c1p2c2...pmcm(∀pi皆为质数)则:
φ
(
N
)
=
N
∗
(
p
1
−
1
p
1
)
∗
(
p
2
−
1
p
2
)
∗
.
.
.
.
.
.
∗
(
p
m
−
1
p
m
)
=
N
∗
∏
质
数
p
∣
N
(
1
−
1
p
)
\varphi(N)=N*(\frac{p_1-1}{p1})*(\frac{p_2-1}{p2})*......*(\frac{p_m-1}{pm})=N*\prod_{质数 p|N}(1-\frac{1}{p})
φ(N)=N∗(p1p1−1)∗(p2p2−1)∗......∗(pmpm−1)=N∗质数p∣N∏(1−p1)
证明:设
p
,
q
p,q
p,q是
N
N
N的质因子,则
1
1
1~
N
N
N中p,q的倍数为
p , 2 p , 3 p , . . . . . . . , N / p , q , 2 q , 3 q , . . . . . . , N / q ( p q 的 倍 数 被 筛 了 2 遍 ) p,2p,3p,.......,N/p,q,2q,3q,......,N/q(pq的倍数被筛了2遍) p,2p,3p,.......,N/p,q,2q,3q,......,N/q(pq的倍数被筛了2遍)
共有 N / p + N / q − N / p q N/p+N/q-N/pq N/p+N/q−N/pq个(由算数基本定理可知, p q pq pq一定 ≤ N ≤N ≤N),则 1 1 1~ N N N中不与
N
N
N含有共同质因子
p
p
p或
q
q
q的数的个数为:
N
−
(
N
p
)
−
(
N
q
)
+
(
N
p
q
)
=
N
∗
(
1
−
1
p
−
1
q
+
1
p
q
)
=
N
(
1
−
1
p
)
(
1
−
1
q
)
N-(\frac{N}{p})-(\frac{N}{q})+(\frac{N}{pq})=N*(1-\frac{1}{p}-\frac{1}{q}+\frac{1}{pq})=N(1-\frac{1}{p})(1-\frac{1}{q})
N−(pN)−(qN)+(pqN)=N∗(1−p1−q1+pq1)=N(1−p1)(1−q1)
推广到多种情况(全部质因子),用数学归纳法证明即可。
证毕。
欧拉函数性质
- ∀ n > 1 , 1 \forall n>1,1 ∀n>1,1~ n n n中与n互质的数的和为 n / 2 ∗ φ ( n ) n/2*\varphi(n) n/2∗φ(n)
证明: ∵ 与 n 互 质 的 x , g c d ( n , x ) = g c d ( n , n − x ) , ∴ 与 n 互 质 的 x , n − x 成 对 出 现 , 平 均 值 为 n / 2. 因 此 与 n 互 质 的 数 的 平 均 值 也 为 n / 2 , 证 毕 。 \because 与n互质的x,gcd(n,x)=gcd(n,n-x),\therefore 与n互质的x,n-x成对出现,平均值为n/2.因此与n互质的数的平均值也为n/2,证毕。 ∵与n互质的x,gcd(n,x)=gcd(n,n−x),∴与n互质的x,n−x成对出现,平均值为n/2.因此与n互质的数的平均值也为n/2,证毕。
- 若a,b互质,则
φ
(
a
b
)
=
φ
(
a
)
φ
(
b
)
\varphi(ab)=\varphi(a)\varphi(b)
φ(ab)=φ(a)φ(b)
证明: ∵ φ ( a ) = a ∗ ∏ 质 数 p ∣ a ( 1 − 1 p ) , φ ( b ) = b ∗ ∏ 质 数 p ∣ b ( 1 − 1 p ) , φ ( a b ) = a b ∗ ∏ 质 数 p ∣ a b ( 1 − 1 p ) = a b ∗ ∏ 质 数 p ∣ a ( 1 − 1 p ) ∗ ∏ 质 数 p ∣ b ( 1 − 1 p ) , 由 于 两 数 互 质 , 无 公 共 质 因 子 。 证 毕 。 \because \varphi(a)=a*\prod_{质数p|a}(1-\frac{1}{p}),\varphi(b)=b*\prod_{质数p|b}(1-\frac{1}{p}),\varphi(ab)=ab*\prod_{质数p|ab}(1-\frac{1}{p})=ab*\prod_{质数p|a}(1-\frac{1}{p})*\prod_{质数 p|b}(1-\frac{1}{p}),由于两数互质,无公共质因子。证毕。 ∵φ(a)=a∗∏质数p∣a(1−p1),φ(b)=b∗∏质数p∣b(1−p1),φ(ab)=ab∗∏质数p∣ab(1−p1)=ab∗∏质数p∣a(1−p1)∗∏质数p∣b(1−p1),由于两数互质,无公共质因子。证毕。
依照性质2,可得积性函数。 - 若 f f f是积性函数,且在算术基本定理中 n = ∏ i = 1 m p i c i n=\prod_{i=1}^{m}p_i^{c{i}} n=∏i=1mpici,根据积性函数定义式可得。
- 若
p
∣
n
p\mid n
p∣n且
p
2
∣
n
p^2\mid n
p2∣n,则
φ
(
n
)
=
φ
(
n
/
p
)
∗
p
\varphi(n)=\varphi(n/p)*p
φ(n)=φ(n/p)∗p
证明: φ ( n ) = n ∗ ∏ 质 数 w ∣ n ( 1 − 1 w ) = ( n / p ) ∗ ∏ 质 数 w ∣ n / p ( 1 − 1 w ) ∗ p = φ ( n / p ) ∗ p \varphi(n)=n*\prod_{质数w\mid n}(1-\frac{1}{w})=(n/p)*\prod_{质数 w\mid n/p}(1-\frac{1}{w})*p=\varphi(n/p)*p φ(n)=n∗∏质数w∣n(1−w1)=(n/p)∗∏质数w∣n/p(1−w1)∗p=φ(n/p)∗p,由于 n / p n/p n/p与 n n n所含质因子相同,只是 p p p的指数不同罢了,所以等式成立。 - 若
p
是
质
数
,
p
∣
n
p是质数,p\mid n
p是质数,p∣n且
p
2
∤
n
p^2\nmid n
p2∤n,则
φ
(
n
)
=
φ
(
n
/
p
)
∗
(
p
−
1
)
\varphi(n)=\varphi(n/p)*(p-1)
φ(n)=φ(n/p)∗(p−1)
证明: ∵ n / p 与 p 互 质 , 则 φ ( n ) = φ ( n / p ) ∗ φ ( p ) = φ ( n / p ) ∗ ( p − 1 ) \because n/p与p互质,则\varphi(n)=\varphi(n/p)*\varphi(p)=\varphi(n/p)*(p-1) ∵n/p与p互质,则φ(n)=φ(n/p)∗φ(p)=φ(n/p)∗(p−1) -
∑
d
∣
n
φ
(
d
)
=
n
\sum_{d \mid n}\varphi(d)=n
∑d∣nφ(d)=n
证明: 设 f ( n ) = ∑ d ∣ n φ ( d ) , f ( m ) = ∑ d ∣ m φ ( d ) 设f(n)=\sum_{d \mid n}\varphi(d),f(m)=\sum_{d \mid m}\varphi(d) 设f(n)=∑d∣nφ(d),f(m)=∑d∣mφ(d), 若 n , m 互 质 , φ 是 积 性 函 数 若n,m互质,\varphi是积性函数 若n,m互质,φ是积性函数, f ( n m ) = ∑ d ∣ n m φ ( d ) = ∑ d ∣ n φ ( d ) ∗ ∑ d ∣ m φ ( d ) = f ( n ) ∗ f ( m ) f(nm)=\sum_{d \mid nm}\varphi(d)=\sum_{d \mid n}\varphi(d)*\sum_{d \mid m}\varphi(d)=f(n)*f(m) f(nm)=∑d∣nmφ(d)=∑d∣nφ(d)∗∑d∣mφ(d)=f(n)∗f(m), 即 ∑ d ∣ n φ ( d ) 是 积 性 函 数 , 对 于 单 个 质 因 子 , f ( p m ) = φ ( 1 ) + φ ( p ) + φ ( p 2 ) + . . . . . . + φ ( p m ) 即\sum_{d \mid n}\varphi(d)是积性函数,对于单个质因子,f(p^{m})=\varphi(1)+\varphi(p)+\varphi(p^2)+......+\varphi(p^m) 即∑d∣nφ(d)是积性函数,对于单个质因子,f(pm)=φ(1)+φ(p)+φ(p2)+......+φ(pm)根据性质4,我们可以发现 f ( p m ) f(p^m) f(pm)为等比数列求和+1,即 f ( p m ) = 1 + ( p − 1 − ( p − 1 ) ∗ p m 1 − p ) = p m . f(p^m)=1+(\frac{p-1-(p-1)*{p^m}}{1-p})=p^m. f(pm)=1+(1−pp−1−(p−1)∗pm)=pm.所以 f ( n ) = ∏ i = 1 m f ( p i c i ) = ∏ i = 1 m p i c i = n f(n)=\prod_{i=1}^{m}f(p_i^{c_i})=\prod_{i=1}^{m}p_i^{c_i}=n f(n)=i=1∏mf(pici)=i=1∏mpici=n性质6成立.
题目描述
φ
(
x
)
\varphi(x)
φ(x)表示小于或等于x的正整数中与n互质的数的数目。。
有n次询问,每次问
φ
(
x
)
\varphi(x)
φ(x)的值。
【输入格式】
第一行
n
n
n(
1
<
=
n
<
=
10000
1<=n<=10000
1<=n<=10000)
下来n行,每行一个整数x,表示求
φ
(
x
)
\varphi(x)
φ(x)。(
1
<
=
x
<
=
20000000
1<=x<=2000 0000
1<=x<=20000000)
【输出格式】
每次询问输出一行一个整数
φ
(
x
)
\varphi(x)
φ(x)。
【样例输入】
3
10
20
100
【样例输出】
4
8
40
代码
1.运用性质4、5
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int N=1270608;
const int M=2e7+10;
const int inf=2e7;
int prime[N],phi[M],m;
bool v[M];
void g_p()
{
m=0;
memset(v,true,sizeof(v));
for(int i=2;i<=inf;i++)
{
if(v[i])prime[++m]=i,phi[i]=i-1;
for(int j=1;j<=m&&i*prime[j]<=inf;j++)
{
v[i*prime[j]]=false;
if(i%prime[j]==0)
{
phi[i*prime[j]]=prime[j]*phi[i];
break;
}
else
{
phi[i*prime[j]]=(prime[j]-1)*phi[i];
}
}
}
}
int main()
{
g_p();int n;scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x;scanf("%d",&x);
printf("%d\n",phi[x]);
}
return 0;
}
2.运用欧拉函数定理
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib>
using namespace std;
const int N=2e7+10;
int a[N];
inline int solve(int x)
{
int d=x,dd=x;
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
d=d/i*(i-1);
while(!(x%i))
{
x/=i;
}
}
}
int last=0;
if(x>1)d=d/x*(x-1);a[dd]=d;
return d;
}
int main()
{
int n;scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int x;scanf("%d",&x);
printf("%d\n",!a[x-1]?solve(x-1):a[x-1]);
}
return 0;
}