随笔:152 文章:0 评论:129 引用:0
Headacher
学习笔记,从一点一滴做起。
C++博客
首页
发新随笔
发新文章
联系
聚合
管理
欧拉函数
E(x)表示比x小的且与x互质的正整数的个数。
*若p是素数,E(p)=p-1。
*E(p^k)=p^k-p^(k-1)=(p-1)*P^(k-1)
证:令n=p^k,小于n的正整数数共有n-1即(p^k-1)个,其中与p不质的数共[p^(k-1)-1]个(分别为1*p,2*p,3*p...p(p^(k-1)-1))。
所以E(p^k)=(p^k-1)-(p^(k-1)-1)=p^k-p^(k-1).得证。
*若ab互质,则E(a*b)=E(a)*E(b),欧拉函数是积性函数.
*对任意数n都可以唯一分解成n=p1^a1*p2^a2*p3^a3*...*pn^an(pi为素数).
则E(n)=E(p1^a1)*E(p2^a2)*E(p3^a3)*...*E(pn^an)
=(p1-1)*p1^(a1-1)*(p2-1)*p2^(a2-1)*...*(pn-1)*pn^(an-1)
=(p1^a1*p2^a2*p3^a3*...*pn^an)*[(p1-1)*(p2-1)*(p3-1)*...*(pn-1)]/(p1*p2*p3*...*pn)
=n*(1-1/p1)*(1-1/p2)*...*(1-1/pn)
* E(p^k) =(p-1)*p^(k-1)=(p-1)*p^(k-2)*p
E(p^(k-1))=(p-1)*p^(k-2)
->当k>1时,E(p^k)=E(p*p^(k-1))=E(p^(k-1))*p.
(当k=1时,E(p)=p-1.)
由上式: 设P是素数,
若p是x的约数,则E(x*p)=E(x)*p.
若p不是x的约数,则E(x*p)=E(x)*E(p)=E(x)*(p-1).
*快速求欧拉函数方法:
首先来回顾一下线性筛选素数方法:
code
for
(i
=
2
;i
<=
1000000
;i
++
)
{
if
(
!
c[i])prime[len
++
]
=
i;
for
(j
=
0
;j
<
len
&&
prime[j]
*
i
<=
1000000
;j
++
)
{
c[prime[j]
*
i]
=
1
;
//
不是质数
if
(i
%
prime[j]
==
0
)
break
;
//
}
}
}
然后求欧拉函数:
Phi1
phi[
1
]
=
1
;
for
(i
=
2
; i
<
10000
; i
++
) {
if
(
!
mark[i]) {
phi[i]
=
i
-
1
;
continue
;
}
for
(j
=
0
; j
<
size
&&
prime[j]
*
prime[j]
<=
i; j
++
) {
if
(i
%
prime[j]
==
0
) {
if
(i
/
prime[j]
%
prime[j]
==
0
)
phi[i]
=
prime[j]
*
phi[i
/
prime[j]];
else
phi[i]
=
(prime[j]
-
1
)
*
phi[i
/
prime[j]];
break
;
}
}
}
由以上思想,可以在筛选素数的过程中求出欧拉函数:
Phi
for
(i
=
2
;i
<=
limit;i
++
)
{
if
(mark[i]
==
0
)
{
prime[
++
prime[
0
]]
=
i;
E[i]
=
i
-
1
;
}
for
(j
=
1
;j
<=
prime[
0
]
&&
prime[j]
*
i
<=
limit;j
++
)
{
mark[prime[j]
*
i]
=
1
;
if
(i
%
prime[j]
==
0
)
{
E[i
*
prime[j]]
=
E[i]
*
prime[j];
break
;
}
else
E[i
*
prime[j]]
=
E[i]
*
(prime[j]
-
1
);
}
}
发表于 2009-07-19 12:39
Headacher
阅读(3108)
评论(0)
编辑
收藏
引用
所属分类:
数据结构和算法
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
POJ 2043 扫描 计算几何
POJ 1113 凸包
POJ 3164 最小树形图 朱刘算法
POJ 2761 SBT 静态数组实现
POJ 2778 自动机_矩阵乘法
HDU 2222 AC自动机
数位统计
无耻IO优化
哦哦
有上下界的可行流
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
CALENDER
<
2009年8月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
公告
留言簿
(8)
给我留言
查看公开留言
查看私人留言
随笔分类
ACM-ICPC(7)
(rss)
操作系统
(rss)
计算机组成与体系结构(2)
(rss)
数据结构和算法(34)
(rss)
数据库
(rss)
心情日记(20)
(rss)
随笔档案
2010年12月 (1)
2010年9月 (1)
2010年5月 (3)
2010年4月 (3)
2010年3月 (1)
2010年2月 (2)
2010年1月 (10)
2009年12月 (1)
2009年10月 (3)
2009年9月 (6)
2009年8月 (14)
2009年7月 (8)
2009年6月 (2)
2009年5月 (17)
2009年4月 (4)
2009年3月 (5)
2009年2月 (25)
2009年1月 (9)
2008年12月 (1)
2008年11月 (30)
2008年10月 (4)
2008年7月 (2)
ACM Teammates
Qinz
(rss)
SHFACM
(rss)
wudired
(rss)
The One
May
(rss)
搜索
积分与排名
积分 - 131823
排名 - 194
最新评论
1. re: POJ 1379 run away 模拟退火算法[未登录]
为何按你的代码交会RE呢?
--zhang
2. re: POJ 1947 树状dp[未登录]
评论内容较长,点击标题查看
--Sky
3. re: 独立集,覆盖集,支配集,最大团,最大匹配
评论内容较长,点击标题查看
--fly2best
4. re: HDU HDOJ 1004 Let the Balloon Rise 字典树[未登录]
尼玛 这就是个水题
--xxx
5. re: nuaa 1017 最大0,1子矩阵[未登录]
1 0 1 0 1
2 1 2 1 2
3 2 2 2 0
0 3 4 3 1
1 0 5 4 2 这个写错了吧
第三行第三列那个2应该为3才对
--hu
阅读排行榜
1. 独立集,覆盖集,支配集,最大团,最大匹配(7883)
2. 原码 补码 反码 移码(6378)
3. POJ 计算几何入门题目推荐(转)(5700)
4. POJ 1379 run away 模拟退火算法(4373)
5. 数据的浮点数表示(3899)
评论排行榜
1. POJ 1379 run away 模拟退火算法(12)
2. 我真是太笨了……(10)
3. PKU POJ 2186 Popular Cows 强连通分量(5)
4. PKU POJ 1679 The Unique MST 次小生成树(4)
5. HDU HDOJ 1005 Number Sequence(4)
Powered By:
博客园
模板提供
:
沪江博客