欧拉函数

POJ-2478-Farey Sequence(欧拉函数)

橙三吉。 提交于 2019-12-03 12:13:21
链接: https://vjudge.net/problem/POJ-2478 题意: The Farey Sequence Fn for any integer n with n >= 2 is the set of irreducible rational numbers a/b with 0 < a < b <= n and gcd(a,b) = 1 arranged in increasing order. The first few are F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} You task is to calculate the number of terms in the Farey sequence Fn. 思路: 法雷级数的数的个数就是欧拉函数,欧拉函数打表前缀和即可。 代码: #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<math.h> #include<vector> using namespace std;

线性筛欧拉函数

匿名 (未验证) 提交于 2019-12-03 00:40:02
#include<iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <algorithm> #define ll long long using namespace std; ll n,jdg[ 1000001 ],prime[ 1000001 ],phi[ 1000001 ],cnt,ans; int main() { scanf( " %lld " ,& n); phi[ 1 ]= 1 ;jdg[ 1 ]= 1 ; for (ll i= 2 ;i<=n;i++ ) { if (! jdg[i]) { prime[ ++cnt]= i; phi[i] =i- 1 ; } for (ll j= 1 ;j<=cnt;j++ ) { if (i*prime[j]> n) break ; jdg[i *prime[j]]= 1 ; if (i%prime[j]== 0 ) { phi[i *prime[j]]=phi[i]* prime[j]; break ; } phi[i *prime[j]]=phi[i]*(prime[j]- 1 ); } } } 原文:https://www.cnblogs.com/water-radish/p/9280649

BZOJ 4805: 欧拉函数求和 杜教筛

匿名 (未验证) 提交于 2019-12-03 00:37:01
https://www.lydsy.com/JudgeOnline/problem.php?id=4805 https://blog.csdn.net/popoqqq/article/details/45023331 杜教筛用来求积性函数前缀和,本题同bzoj 3944,bzoj 3944多了一个求sigma( μ ( i ) ) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cmath> 6 #include<queue> 7 using namespace std; 8 #define LL long long 9 const int maxn= 5000010 ; 10 LL n; 11 LL phi[maxn]= {}; 12 LL pri[maxn/ 10 ]={},tot= 0 ; 13 bool v[maxn]= {}; 14 void get_phi( int m){ 15 phi[ 1 ]= 1 ; 16 for ( int i= 2 ;i<=m;++ i){ 17 if (!v[i]){pri[++tot]=i;phi[i]=i- 1 ;}

欧拉函数

匿名 (未验证) 提交于 2019-12-02 23:42:01
\(\varphi(x)\) 表示 \(x\) 以内与 \(x\) 互质的个数 \(\varphi(x)=x*\prod\limits_{i=1}^n(1-\dfrac{1}{p_i})\) \(p_i\) 为x的质因数 特殊的 \(\varphi(1)=1\) 其中 \(p_1,p_2……p_n\) Ϊ \(x\) 的所有质因数( \(x\) 是正整数) 那么,怎么理解这个公式呢? 对于 \(x\) 的一个质因数 \(p_i\) ,因为 \(x\) 以内 \(p_i\) 的倍数是均匀分布的,所以 \(x\) 以内有 \(\frac {1}{p_i}\) 的数是 \(p_i\) 的倍数 对应的,有 \(1-\dfrac {1}{p_i}\) 的数不是 \(p_i\) 同理,对于 \(p_j\) 有 \(1-\frac {1}{p_j}\) 的数不是 \(p_j\) 的倍数 所以有 \((1-\frac {1}{p_i})*(1-\frac {1}{p_j})\) 的数既不是 \(p_i\) 的倍数,又不是 \(p_j\) 的倍数 当有函数 \(f(x)\) , \(m\) 与 \(n\) 互质时, \(f(m)*f(n)=f(m*n)\) 称为积性函数 对任意整数 \(m\) 与 \(n\) , \(f(m)*f(n)=f(m*n)\) 称为完全积性函数 对于质数 \(p\) ,

欧拉函数

…衆ロ難τιáo~ 提交于 2019-12-02 13:30:33
在数论中,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目   用φ(n) 来表示欧拉函数,特别的是对于一个数n,1也是与n互质的,则 φ(1) = 1; 欧拉函数的通式: $$\sum f_{n}$$ 来源: https://www.cnblogs.com/nonameless/p/11750030.html

【数论】(欧拉函数)GCD HDU2588

谁说我不能喝 提交于 2019-12-02 11:47:15
描述 The greatest common divisor GCD(a,b) of two positive integers a and b,sometimes written (a,b),is the largest divisor common to a and b,For example,(1,2)=1,(12,18)=6. (a,b) can be easily found by the Euclidean algorithm. Now Carp is considering a little more difficult problem: Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M. 输入 The first line of input is an integer T(T<=100) representing the number of test cases. The following T lines each contains two numbers N and M (2<=N<=1000000000, 1<=M<=N), representing a test case. 输出 For each test case,output the answer on a

欧拉函数(欧拉定理)与费马小定理

♀尐吖头ヾ 提交于 2019-12-02 03:39:06
详细的证明忽略。只记录使用场景。 欧拉函数 欧拉函数 是小于等于 n 的正整数中与 n 互质的数的个数。 欧拉定理 使用条件为a和n互质,即gcd(a,n)=1 对于任意互素的 ,有 方法1:求单个数的欧拉函数 我们首先应该要知道欧拉函数的通项公式:φ(n)=n*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中pi为n的质因数 long long eular(long long n) { long long ans = n; for(int i = 2; i*i <= n; i++) { if(n % i == 0) { ans -= ans/i; //等价于通项,把n乘进去 while(n % i == 0) //确保下一个i是n的素因数 n /= i; } } if(n > 1)ans -= ans/n; //最后可能还剩下一个素因数没有除 return ans; } 方法2: 打表求欧拉函数 void euler() { for(int i=2;i<maxn;i++){ if(!phi[i]) for(int j=i;j<maxn;j+=i){ if(!phi[j]) phi[j]=j; phi[j]=phi[j]/i*(i-1); } } } 方法3: 欧拉筛素数同时求欧拉函数 void get_phi() { int i,

浅谈欧拉函数

给你一囗甜甜゛ 提交于 2019-12-02 02:46:06
浅谈欧拉函数 本篇博客简单讲解一下 欧拉函数 的相关知识点。欧拉函数属于信息学奥林匹克竞赛知识点中数论方面的内容,是数学的一个分支。理解好欧拉函数对开发思维 (emm瑟瑟发抖) 有很大的帮助。 欧拉函数的概念 欧拉函数的定义是:对于一个正整数 \(n\) ,它的欧拉函数是所有小于等于 \(n\) 的正整数中所有与 \(n\) 互质的数的数目。记作 \(\Phi (n)\) 例: \(\Phi (8)=4\) ( \(1,3,5,7\) 与 \(8\) 均互质) 欧拉函数的基本性质 欧拉函数的基本性质有三(最基本的): \[ \Phi(1)=1 \] \[ \Phi (p)=p-1 \quad (p为质数) \] \[ \Phi(p^m)=(p-1)\times p^{m-1}\quad(p为质数) \] 第一个很简单我就不说了。 第二个,因为 \(p\) 为质数,所以很显然,从 \(1-(p-1)\) 的所有数都与其互质,但是因为欧拉函数的定义是 小于等于 \(p\) 的所有数,所以 \(p\) 自己是不满足条件的。那么就得证了。 第三个,这是个比较常用的条件。证明也比较好理解,我们可以画一个数轴(在这里我就不画了)。因为 \(p\) 是个质数,所以在整个的 \(p^m\) 个数中,只有 \(p\) 的倍数是与之不互质的,其他的数都与其互质。那么根据 容斥原理

欧拉函数 || Calculation 2 || HDU 3501

末鹿安然 提交于 2019-11-30 19:25:34
题面: 3501 题解:欧拉函数的基础应用,再套个很 easy 的等差数列前 n 项和就成了。 啊,最近在补作业+准备月考+学数论,题就没怎么写,感觉菜得一匹>_< CSL加油加油~! 代码: 1 #include<cstdio> 2 #include<cmath> 3 #define ll long long 4 #define mod(a) ((a)>=MOD?(a)%MOD:(a)) 5 using namespace std; 6 const ll MOD=1000000007; 7 ll N,sq,phi,n; 8 int main(){ 9 scanf("%lld",&N); 10 while(N){ 11 phi=N; 12 sq=sqrt(N); 13 n=N; 14 for(int i=2;i<=sq;i++){ 15 if(n%i==0){ 16 phi=mod(phi*(i-1)/i); 17 while(n%i==0) n/=i; 18 } 19 } 20 if(n>1) phi=mod(phi*(n-1)/n); 21 phi=mod(phi*N/2); 22 printf("%lld\n",mod((1+N)*N/2-N-phi+MOD)); 23 scanf("%lld",&N); 24 } 25 return 0; 26 } View Code By

洛谷$P1390$ 公约数的和 莫比乌斯反演/欧拉函数

久未见 提交于 2019-11-30 15:47:58
正解:莫比乌斯反演/欧拉函数 解题报告: 传送门$QwQ$ 首先显然十分套路地变下形是趴 $\begin{align*}&=\sum_{i=1}^n\sum_{j=1}^n gcd(i,j)\\&=\sum_{i=1}^n\sum_{j=1}^n\sum_{d=1}^{min(i,j)} [gcd(i,j)==d]\cdot d\\&=\sum_{d=1}^{n}d\cdot \sum_{i=1}^n\sum_{j=1}^n [gcd(i,j)==d]\\\end{align*}$ 这时候有两个选择,一个是莫反一个是欧拉函数 欧拉函数的话就很$easy$?直接戳我 简要总结 里常见套路第一条,就能$O(n)$做了$QwQ$ 然后莫反就其实也挺套路的,,,直接套个板子上去,记得加个数论分块.$over$ 来源: https://www.cnblogs.com/lqsukida/p/11601828.html