欧拉函数

欧拉函数

走远了吗. 提交于 2020-04-04 03:54:08
一、质因数与分解质因数 ? 如果 一个质数是某个数的约数,那么就说这个质数是这个数的 质因数 。 把一个合数用质因数相乘的形式表示出来,叫做分解质因数。 例:把30分解质因数。 解:30=2×3×5。 其中2、3、5叫做30的质因数。 又如12=2×2×3=22×3,2、3都叫做12的质因数。 二、 公约数只有1的两个数,叫做 互质数 (欧拉函数是小于n的正整数中与n互质的数的数目) 列:1到8中 ,与8互质的数有:1、3、 5、 7 1到12中,与12互质的数有: 1、 5、 7、 11、 看了一下午的欧拉函数,感觉都快看崩溃了,还好找到一个看得懂的博客。。。。 https://www.cnblogs.com/linyujun/p/5194170.html 欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数 可以先在1到n-1中找到与n不互质的数,然后把他们减掉 比如φ(12) 把12质因数分解,12=2*2*3,其实就是得到了2和3两个质因数 然后把2的倍数和3的倍数都删掉 2的倍数:2,4,6,8,10,12 3的倍数:3,6,9,12 本来想直接用12 - 12/2 - 12/3 但是6和12重复减了 所以还要把即是2的倍数又是3的倍数的数加回来 (>﹏<) 所以这样写12 - 12/2 - 12/3 + 12/(2*3) 这叫什么,这叫容斥啊

数论8——欧拉函数

萝らか妹 提交于 2020-04-04 03:51:07
欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 辣么,怎么求哩?~(~o ̄▽ ̄)~o 可以先在1到n-1中找到与n不互质的数,然后把他们减掉 比如φ(12) 把12质因数分解,12=2*2*3,其实就是得到了2和3两个质因数 然后把2的倍数和3的倍数都删掉 2的倍数:2,4,6,8,10,12 3的倍数:3,6,9,12 本来想直接用12 - 12/2 - 12/3 但是6和12重复减了 所以还要把即是2的倍数又是3的倍数的数加回来 (>﹏<) 所以这样写12 - 12/2 - 12/3 + 12/(2*3) 这叫什么,这叫容斥啊,容斥定理听过吧 比如φ(30),30 = 2*3*5 所以φ(30) = 30 - 30/2 - 30/3 - 30/5 + 30/(2*3) + 30/(2*5) + 30/(3*5) - 30/(2*3*5) 但是容斥写起来好麻烦( ̄. ̄) 有一种简单的方法 φ(12) = 12*(1 - 1/2)*(1 - 1/3) = 12*(1 - 1/2 - 1/3 + 1/6) φ(30) = 30*(1 - 1/2)*(1 - 1/3)*(1 - 1/5) = 30*(1 - 1/2 - 1/3 - 1/5 + 1/6 + 1/10 + 1/15 - 1/30) 你看( •̀∀•́ ),拆开后发现它帮你自动帮你容斥好 所以φ

集训队8月4日(质数+约数)

喜你入骨 提交于 2020-03-21 01:12:23
刷题数:7(加CF) 今天看了质数+约数,算法竞赛进阶指南134~148页 就是那点东西吧,学了个线性数筛和欧拉函数的一些性质。 找了两个代表性题目,写了两篇博客: DFS+质数 https://www.cnblogs.com/2462478392Lee/p/11299858.html 欧拉函数线性筛 https://www.cnblogs.com/2462478392Lee/p/11299887.html 训练总结 稳住,一定要有耐心,有目的性,有规划。 来源: https://www.cnblogs.com/2462478392Lee/p/11299899.html

【数论】数论杂谈

北城余情 提交于 2020-03-05 17:23:27
好像有一段时间没有写算法blog了。。 正好最近停课备战Noip,最近主要复习数论,那么就借此机会瞎扯一些简单的数论吧。。。原谅本人 数学渣 。 Part 1 欧拉函数、筛法 众所周知,筛法主流形态为2种,1种是质数筛,比较简单就不介绍了,另外一种是线性的欧拉筛,这里就和欧拉函数一起讲一下吧。。 欧拉函数 欧拉函数 \(( \varphi (x))\) 的定义是这么一个东西:在 \([1,x]\) 范围内与正整数 \(x\) 互质( \(gcd(a,x)=1\) ,后文简记为 \((a,x)=1\) )的正整数 \(a\) 的个数。 欧拉函数有很多性质,由于本人数学渣,这些性质就不给出证明了,想看证明的自行移步dalao博客qaq 一些简单的性质: I.欧拉函数为积性函数,但不是完全积性函数: ​ 通俗的讲就是 \(\varphi (xy) = \varphi(x) \varphi(y)\) 当且仅当 \((x,y)=1\) II.对于一个正整数N的素数幂分解 \(N=p1^{q1}*p2^{q2}*...*pn^{qn}\) ​ 于是有 \(\varphi (N)=N*(p1-1)/p1*(p2-1)/p2*...*(pn-1)/pn\) 。 ​ 上述公式可以用欧拉函数的积性证明,这也是求一个大整数N欧拉函数值的最优策略,复杂度为 \(O(log n)\) 需要预处理出 \(

欧拉函数

情到浓时终转凉″ 提交于 2020-03-03 00:28:12
欧拉函数 在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目。 通式: φ ( x ) = x ∏ i = 1 n ( 1 − 1 p i ) φ(x) = x\prod_{i = 1}^n (1 - \frac{1}{p_i}) φ ( x ) = x i = 1 ∏ n ​ ( 1 − p i ​ 1 ​ ) 其中p1,p2…pn为x的所有质因数,x是不为0的整数。 注意:每种质因数只有一个。比如12=2 2 3那么φ(12)= 12 * (1-1/2)*(1-1/3)=4。 定理: 1.如果p是素数,那么φ(p )=p-1;反之如果p是一个正整数且满足φ(p )=p-1,那么p是素数。 2.如果p是素数,a是一个正整数,那么φ(p a )=p a -p a-1 。 证明:比p a 小的数有p a -1个,因为p a 只有一个素因子p,其中与p不互质的个数就是p的倍数个数p a-1 -1。 3.设n和m是互质的正整数,那么φ(nm)=φ(n)φ(m)。 因为欧拉函数是积性函数。 4.设n=p 1 a1 p 2 a2 …p k ak 为正整数n的素数幂分解,那么φ(n)=n(1-1/p 1 )(1-1/p 2 )…(1-1/p k ) (算法的核心) 5.设n是一个正整数,那么 ∑ d ∣ n φ ( d ) = n \sum_{d|n}φ(d)=n d ∣

数论基础——欧拉函数(一)(模板)

大兔子大兔子 提交于 2020-03-02 01:03:16
目录 数论基础——欧拉函数 定义 通式 代码 性质 数论基础——欧拉函数 定义 对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。 通式 φ ( n ) = n × ( 1 − 1 / p 1 ) × ( 1 − 1 / p 2 ) × ( 1 − 1 / p 3 ) × . . . × ( 1 − 1 / p n ) \varphi(n)=n\times(1-1/p_1)\times(1-1/p_2)\times(1-1/p_3)\times...\times(1-1/p_n) φ ( n ) = n × ( 1 − 1 / p 1 ​ ) × ( 1 − 1 / p 2 ​ ) × ( 1 − 1 / p 3 ​ ) × . . . × ( 1 − 1 / p n ​ ) 即: φ ( n ) = n × ∏ i = 1 n p i − 1 p i \varphi(n)=n\times\prod_{i=1}^{n}{\frac{p_i-1}{p_i}} φ ( n ) = n × ∏ i = 1 n ​ p i ​ p i ​ − 1 ​ p 1 、 p 2 、 p 3 . . . p n p_1、p_2、p_3...p_n p 1 ​ 、 p 2 ​ 、 p 3 ​ . . . p n ​ 是n(n>0)的质因数. 注意: φ ( 1 ) = 1

筛法求欧拉函数

只愿长相守 提交于 2020-02-29 11:25:49
筛法求欧拉函数 1、如果这个数是质数,1~p-1都是质数 2、如果i % primes[j] == 0,说明i是p[j]的质因子则有: 3、如果i % primes[j] != 0,pj是(i*pj)的最小质因子,则有: Example 给定一个正整数n,求1~n中每个数的欧拉函数之和。 输入格式 共一行,包含一个整数n。 输出格式 共一行,包含一个整数,表示1~n中每个数的欧拉函数之和。 数据范围 1≤n≤1061≤n≤106 输入样例: 6 输出样例: 12 #include <iostream> #include <algorithm> using namespace std; typedef long long LL; const int N = 1000010; //primes存的每一个质数, cnt存质数下标 int primes[N], cnt; //欧拉函数 int phi[N]; bool st[N];//表示每个数是否被筛到 LL get_eulers(int n) { phi[1] = 1;//定义第一个 for (int i = 2; i <= n; i ++) { if (!st[i])//如果没被筛过 { primes[cnt ++] = i; phi[i] = i - 1;//如果这个数是质数,1~p-1都是质数 } //从小到大枚举所有质数 for

欧拉函数、欧拉定理和费马小定理

断了今生、忘了曾经 提交于 2020-02-28 11:47:37
对于正整数n,欧拉函数是小于等于n的正整数中与n互质的数的数目,表示为φ(n)。 性质1:对于素数p,φ(p)=p-1。 性质2:对于两个互质数p,q,φ(pq)=φ(p)*φ(q)=(p-1)(q-1)。(积性函数)(易证) 性质3:若n是质数p的k次幂,φ(n)=p k -p k-1 =(p-1)p k-1 ,因为除了p的倍数外,其他数都跟n互质。 性质4: 因为:x可以分解成p1 q1 ×p2 q2 ×p3 q3 ……×pn qn (pi为x的质因数) 因为pi qi 两两互质,所以:φ(x)=φ(p1 q1 )×φ(p2 q2 )×φ(p3 q3 )……×φ(pn qn ) (性质2) 所以:φ(x)=(p1 q1 -p1 q1-1 )×(p2 q2 -p2 q2-1 )×(p3 q3 -p3 q3-1 )……×(pn qn -pn qn-1 ) (性质3) 提取x即得到公式。 性质5:n=Σφ(d|n) yu大有个牛逼的证法,把1到n的所有数除以n,变成n个既约分数,分母d只可能是n的约数。并且,以d为分母的分数个数正好是φ(d)。因此,分数总数n=Σφ(d|n)。 欧拉定理: 对于互质的正整数a和n,有 证明: ( 1 ) 令 Zn = {x1, x2, …, xφ(n)} (mod n), S = {a * x1, a * x2, … , a * xφ(n)}

欧拉函数

穿精又带淫゛_ 提交于 2020-02-28 11:40:16
定义:对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。 1、通式: 其中p1, p2……pn为x的所有质因数,x是不为0的整数。 φ(1)=1(唯一和1互质的数(小于等于1)就是1本身)。 注意:每种质因数只一个。 比如12=2*2*3那么φ(12)=12*(1-1/2)*(1-1/3)=4 若n是质数p的k次幂, 因为除了p的倍数外,其他数都跟n互质。 设n为正整数,以 φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值。 2、欧拉函数是积性函数——若m,n互质, 3、当n为奇数时, , 若n为质数则 , 对于对两个素数p,q φ(pq)=pq-1。 4、欧拉函数和它本身不同质因数的关系: 欧拉函数ψ(N)=N{∏p|N}(1-1/p) , 亦即: (P是数N的质因数) 如: ψ(10)=10×(1-1/2)×(1-1/5)=4; ψ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8; 5、除了N=2,φ(N)都是偶数。 6、设N为正整数,∑φ(d)=N (d|N)。 1 #include<stdio.h> 2 #include<stdlib.h> 3 int eular(int n) 4 { 5 int ret=1,i; 6 for(i=2;i*i<=n;i++) 7 { 8 if(n%i==0) 9 { 10 n/=i

欧拉函数

半世苍凉 提交于 2020-02-28 11:25:33
欧拉函数直接计算公式   欧拉函数的定义: 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)为积性函数, 所以        对于 , 我们知道 因为pi 为质数,所以 [ 1, pi-1 ] 区间的数都与 pi 互质   对于 区间[ 1, ] ,共有 个数, 因为 只有一个质因子,   所以与 约数大于1 的必定包含 质因子 , 其数量为      所以       又 E(N)为积性函数,所以可得 :         又因为 其中( p1, p2 ... pk 为质数, ei 为次数 )        但是此计算公式,除法过多,所以计算速度较慢   在程序中利用欧拉函数如下性质,可以快速求出欧拉函数的值 ( P为N的质因子 )     若(N%P==0 && (N/P)%P==0) 则有:E(N)=E(N/P)*P;     若(N%P==0 && (N/P)%P!=0) 则有:E(N)=E(N/P)*(P-1); 直接计算欧拉函数值代码: View Code #include<stdio