欧拉函数及其性质

对正整数n,欧拉函数是 <= n的数中与n互质的数的数目。

例如euler(8)=4,因为1,3,5,7均和8互质。

Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。

欧拉公式的延伸:一个数的所有质因子之和是euler(n)*n/2。

特殊性质:当n为奇数时,φ(2n)=φ(n)

欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。

若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。

设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)。

欧拉定理:对于互质的正整数a和n,有aφ(n) ≡ 1 mod n。

代码实现:

最高效率的线性时间筛法求素数和欧拉函数。

phi[MAXN] 数组保存的是欧拉函数,prime[MAXN]保存的是素数表。

bool com[MAXN];
int primes, prime[MAXN], phi[MAXN];

phi[1] = 1;
for (int i = 2; i <= n; ++i)
{
  if (!com[i])
  {
    prime[primes++] = i;
    phi[i] = i-1;
  }
  for (int j = 0; j < primes && i*prime[j] <= n; ++j)
  {
    com[i*prime[j]] = true;
    if (i % prime[j])
      phi[i*prime[j]] = phi[i]*(prime[j]-1);
    else
      { phi[i*prime[j]] = phi[i]*prime[j]; break; }
  }
}

时间: 2024-10-01 01:28:37

欧拉函数及其性质的相关文章

欧拉函数定义-性质-应用(费马小定理)

典型例题:51nod  1135  原根 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P,找出P最小的原根. Input 输入1个质数P(3 <= P <= 10^9) Output 输出P最小的原根. Input示例 3 Output示例 2 欧拉公式:含义:欧拉函数就是指:对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 通式: 其中p1, p2--pn为x的所有质因数,x是不为0的整数 φ

欧拉函数各种性质

欧拉函数 欧拉函数,符号记作\(\varphi(n)\),其值为小于\(n\)且与\(n\)互质的数的个数 性质 ① 对于质数\(n\) \[\varphi(n) = n - 1\] ② 对于\(n = p^k\) \[\varphi(n) = (p - 1) * p^{k - 1}\] ③ [积性函数] 对于\(gcd(n,m) = 1\) \[\varphi(n*m) = \varphi(n)*\varphi(m)\] ④ [计算式] 对于\(n = \prod p_i^{k_i}\) \[

欧拉函数常用性质

欧拉函数定义:设n 为正整数,则1,2......,n中与n互质的整数个数记作f(n). 1.1 若n为素数,f(n)=n-1; 1.2 整数n=p*q,p,q为不同素数,则f(n)=f(p)*f(q)=(p-1)*(q-1) 1.3 n=p^a*q^b,f(n)=f(p^a)*f(q^b)=n*(1-1/p)*(1-1/q) 1.4 分解质因子相乘,f(n)=n*(1-1/p1)*(1-1/p2)*.......*(1-1/pk). f(100)=f(2^2*5^2)=100*1/2*4/5=

欧拉函数的几个性质

Note 这篇文章涉及几个欧拉函数的性质 暂时没有证明,大概寒假的时候会补一下证明 定义 \(\phi(n)\)表示在1~n中与n互质的数 计算式 \[ \large{ 若n根据算术基本定理分解为n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\则\phi(n)=n\prod_{i=1}^{m}\left(1-\frac{1}{p}\right)\也可以变式为\phi(n)=n\prod_{i=1}^m\left(\frac{p-1}{p}\right)\本质是一样的 } \]

算法模板——线性欧拉函数

实现功能:求出1-N的欧拉函数,然后应对若干个询问操作 其实就是个素数判定+欧拉函数性质的二合一 代码如下,我觉得应高不难懂,只要你知道欧拉函数的性质 var i,j,k,l,m,n:longint; a,b:array[0..10000005] of longint; procedure phi; var i,j:longint; begin m:=0;a[1]:=1; for i:=2 to n do begin if a[i]=0 then begin inc(m); b[m]:=i; a

4939 欧拉函数

时间限制: 1 s 空间限制: 1000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 输入一个数n,输出小于n且与n互素的整数个数 输入描述 Input Description 包含多组数据,n=0时结束 测试数据组数不会很多,不必先打表后输出 输出描述 Output Description 一组数据一行 样例输入 Sample Input 364684 346 5432 11 24 0 2333333 233333333 0 233333333333333

【转】欧拉函数

链接:http://www.cnblogs.com/yefeng1627/archive/2013/01/02/2842492.html 欧拉函数直接计算公式 欧拉函数的定义: E(N)= (  区间[1,N-1] 中与 N 互质的整数个数). 对于 积性函数 F(X*Y),当且仅当 GCD(X,Y)= 1 时, F(X*Y) = F(X)* F(Y) 任意整数可因式分解为如下形式:      其中( p1, p2 ... pk 为质数, ei 为次数 ) 所以 因为 欧拉函数 E(X)为积性函

欧拉函数 &amp; 【POJ】2478 Farey Sequence &amp; 【HDU】2824 The Euler function

http://poj.org/problem?id=2478 http://acm.hdu.edu.cn/showproblem.php?pid=2824 欧拉函数模板裸题,有两种方法求出所有的欧拉函数,一是筛法,而是白书上的筛法. 首先看欧拉函数的性质: 欧拉函数是求小于n且和n互质(包括1)的正整数的个数.记为φ(n). 欧拉定理:若a与n互质,那么有a^φ(n) ≡ 1(mod n),经常用于求乘法逆元. 若p是一个质数,那么φ(p) = p-1,注意φ(1) = 1. 欧拉函数是积性函数

light oj 1007 Mathematically Hard (欧拉函数)

题目地址:light oj 1007 第一发欧拉函数. 欧拉函数重要性质: 设a为N的质因数,若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a:若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1) 对于这题来说,首先卡MLE..只能开一个数组..所以把前缀和也存到欧拉数组里.然后卡long long..要用unsigned long long .