欧拉函数&&欧拉定理
定义和简单性质
欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的.
欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数.
对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1).
欧拉函数的一些性质:
1.对于素数p, φ(p)=p-1,对于对两个素数p,q φ(pq)=pq-1
欧拉函数是积性函数,但不是完全积性函数.
2.对于一个正整数N的素数幂分解N=P1^q1*P2^q2*...*Pn^qn.
φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn).
3.除了N=2,φ(N)都是偶数.
4.设N为正整数,∑φ(d)=N (d|N).
根据性质2,我们可以在O(sqrt(n))的时间内求出一个数的欧拉函数值.
如果我们要求1000000以内所有数的欧拉函数,怎么办.
上面的方法复杂度将高达O(N*sqrt(N)).
我们来看看线性筛法的程序:
#include<iostream>
#include<cstdio>
using namespace std;
int euler[];
int Max = ;
void Init(){
euler[]=;
for(int i=;i<Max;i++)
euler[i] = i;
for(int i = ;i < Max;i++)
if(euler[i] == i)
for(int j = i;j < Max;j += i) //注意,j += i
euler[j] = euler[j] / i * (i - );//先进行除法是为了防止中间数据的溢出
}
int main()
{
int a;
cin>>a;
Init();
cout<<euler[a];
return ;
}
妙啊!!!!!!!!!!!
欧拉函数φ
欧拉定理是用来阐述素数模下,指数同余的性质。
欧拉定理:对于正整数N,代表小于等于N的与N互质的数的个数,记作φ(N)
例如φ(8)=4,因为与8互质且小于等于8的正整数有4个,它们是:1,3,5,7
欧拉定理还有几个引理,具体如下:
①:如果n为某一个素数p,则φ(p)=p-1;
①很好证明:因为素数p的质因数只有1和它本身,p和p不为互质,所以φ(p)=p-1;
②:如果n为某一个素数p的幂次,那么φ(p^a)=(p-1)*p^(a-1);
②因为比p^a小的数有p^a-1个,那么有p^(a-1)-1个数能被p所整除(因为把1~p^a-1的p的倍数都筛去了)
所以φ(p)=p^a-1-(p^(a-1)-1)=(p-1)*p^(a-1)
③:如果n为任意两个数a和b的积,那么φ(a*b)=φ(a)*φ(b)
③因为比a*b小的数有a*b-1个,条件是a与b互质
那么可以知道,只有那些既满足a与其互质且既满足b与其互质的数满足条件。
根据乘法原理,这样的数可以互相组合,那么就有φ(a)*φ(b)个
所以可以得知φ(a*b)=φ(a)*φ(b) (注意条件必须满足a和b互质)
④:设n=(p1^a1)*(p2^a2)*……*(pk^ak) (为N的分解式)
那么φ(n)=n*(1-1/p1)*(1-1/p2)*……*(1-1/pk)
④因为各个分解完的p1、p2、……pk均为素数,所以它们均为互质的
每次再刨去它们本身,乘起来
剩下的运用容斥原理,再根据引理②和引理③就可以得出
其实欧拉定理是费马小定理的推论。。。
欧拉定理:a^(φ(m))同余1(mod m) (a与m互质)
费马小定理是数论中的一个定理。其内容为假如a是一个整数,p是一个质数的话,那么:
ap = a(mod p)
假如a不是p的倍数的话,那么这个定理也可以写成:
ap − 1 = 1(mod p)

欧拉函数&&欧拉定理的更多相关文章
- 欧拉函数&欧拉定理&降幂 总结
欧拉函数&欧拉定理&降幂 总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300214 这年头不总结一下是真的容易忘,老了老 ...
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- Super A^B mod C (快速幂+欧拉函数+欧拉定理)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1759 题目:Problem Description Given A,B,C, You should quick ...
- POJ3696【欧拉函数+欧拉定理】
题意: 求最小T,满足L的倍数且都由8组成,求长度: 思路: 很强势的福利:点 图片拿出去食用更优 //#include<bits/stdc++.h> #include<cstdio ...
- 2^x mod n = 1(欧拉定理,欧拉函数,快速幂乘)
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 数论的欧拉定理证明 & 欧拉函数公式(转载)
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) . 完全余数集合:定义小于 n 且和 n 互质的数 ...
- BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3860 Solved: 1751[Submit][Status][Discuss] Descripti ...
- XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】
1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS Memory Limit: 128 MBSubmit: 45 Solved: 8[Submit][Status][W ...
- [洛谷P5106]dkw的lcm:欧拉函数+容斥原理+扩展欧拉定理
分析 考虑使用欧拉函数的计算公式化简原式,因为有: \[lcm(i_1,i_2,...,i_k)=p_1^{q_{1\ max}} \times p_2^{q_{2\ max}} \times ... ...
随机推荐
- Ajax——php基础知识(一)
AMP环境 AMP(Apache.MySQL.PHP)是三个独立的软件,但是对于初学者而言分别安装以及配置需要掌握一定的软件知识,所以就有了很多AMP集成环境帮助我们简化安装 ——WAMP WAMP安 ...
- html5——多列布局
基本概念 1.多列布局类似报纸或杂志中的排版方式,上要用以控制大篇幅文本. 2.跨列属性可以控制横跨列的数量 /*列数*/ -webkit-column-count: ; /*分割线*/ -webki ...
- js分页插件
//分页插件1function showView(option) { //参数定义id,页容量,当前页,总数,页总数 var id = option.id, pageSiz ...
- js 判断 微信浏览器
<script type="text/javascript"> window.onload = function() { isWeixinBrowser(); } // ...
- R包
查看默认安装包的位置 .libPaths() 移除包 remove.packages("package_name") 查看所有安装的包 library() 按 q 退出包列表 ...
- react typescript 子组件给父组件传值
//父组件 import * as React from 'react'import { Input } from 'antd'const Search = Input.Searchimport &q ...
- Codeforces 912D - Fishes
传送门:http://codeforces.com/contest/912/problem/D 本题是一个概率问题——求数学期望. 在一个n×m的方格中,有k个“*”.每个格子里可能有0~1个“*”. ...
- router-link/ router-view 的使用
遇到的问题如下: 在菜单栏使用router-link配置菜单连接地址,使用router-view 显示连接地址的详细内容 首次配置的时候,使用router-link 配置好菜单之后,不知道如何使用ro ...
- springCloud学习-服务消费者(rest+ribbon)
1.ribbon简介 spring cloud的Netflix中提供了两个组件实现软负载均衡调用:ribbon和feign. Ribbon 是一个基于 HTTP 和 TCP 客户端的负载均衡器 它可以 ...
- GMT,UTC,DST,CST时间详解
全球24个时区的划分 相较于两地时间表,可以显示世界各时区时间和地名的世界时区表(World Time),就显得精密与复杂多了,通常世界时区表的表盘上会标示着全球24个时区的城市名称,但究 ...