2、 n为质数, φ(n) = n-1;

3、 n是 某个质数的幂次 φ(pk) = pk - pk-1 = pk*(1 – 1/p)

证:这是因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有p^(k-1)个,即1×p、2×p、3×p、...、p^(k-1)×p,把它们去除,剩下的就是与n互质的数。

φ(8) = 23 - 22 = 4;

4、 n可以分解为两个 互质 数的积, φ(p1*p2) = φ(p1)*φ(p2)(p1, p2 为质数, 以下同,不在赘述);

如 φ(56) = φ(7)*φ(8) = 4*6 = 24;

5、 把n进行 质因分解 , 得到n = p1a1*p2a2*p3a3*p4a4……pkak

由(4)得 φ (n)= φ(p1a1)*φ(p2a2)*φ(p3a3)*φ(p4a4)……φ(pkak)

由(3)得 φ(n) = p1a1*(1 - 1/p1)*p2a2*(1-1/p2)*p3a3*(1 – 1/p3)*……*pkak*(1 – 1/pk)

6、 由5结果得求欧拉函数的基本公式

φ(n)= n* (1 - 1/p1)*(1-1/p2)* (1 – 1/p3)*……*(1 – 1/pk)

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

a与n互质,aφ(n)≡ 1 (mod n)

当n为质数时有 费马小定理

ap-1≡ 1 (mod p)

欧拉定理的推广——有关的 高次幂取模 指数循环节

公式: ax mod(c)=a(x mod phi(c) +phi(c)) mod(c), (x>=phi(c))           注:(phi==φ)

欧拉函数代码

const int MAXN = 1e6;//打表的范围
  int prime[MAXN+10], cnt = 0;
   int a[MAXN+10];
 void init(){//素数筛
      for(int i = 2; i <= MAXN; i++) a[i] = true;
     for(int i = 2; i <= MAXN; i++){
         if(a[i]){
              prime[++cnt] = i;
         for(int j = 1; j <= cnt; j++){
             if(prime[j]*i > MAXN) break;
             a[prime[j]*i] = false;
             if(i%prime[j] == 0) break;
 int Euler(int n){//欧拉函数
     int ans = n;
     for(int i = 1; i <= cnt && prime[i] <= n; i++){
         if(n%prime[i] == 0){
             while(n%prime[i] == 0){
                 n /= prime[i];
             ans = ans/prime[i]*(prime[i]-1);
     return ans;
                    简单总结一下最近学习的欧拉函数欧拉函数定义:在数论,对正整数n,欧拉函数是小于等于n的数中与n互质的数的数目,记作φ(n)。1、φ(1) = 1;2、n为质数, φ(n) = n-1;3、 n是某个质数的幂次 φ(pk) = pk - pk-1 = pk*(1 – 1/p)证:这是因为只有当一个数不包含质数p,才可能与n互质。而包含质数p的数一共有p^(k-1)个,即1×p、2...
n 分解质因数后:n=p1a1 × p2a2 × p3a3 … pkak,(其中 pi 为质数)
那么 φ(n) = n × (1 - 1/p1) × (1 - 1/p2) ×… ×(1 - 1/pk)
公式证明:
1.从1—n中去掉p1,p2…pk的的倍数;
2.加上所有pi 
				
欧拉函数:对正整数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。 欧拉定理:对于互质的正整数a和n,有aφ(n) ≡ 1 mod n。
欧拉函数: 就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。 欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn) 其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。 所以,根据通式我们可以打出以下代码: ll eular(ll n) 初步认识: 在数论,对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。此函数以其首名研究者欧拉命名(Euler's totient function),它又称为Euler's totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。 从欧拉函数引伸出来在环论方面的事实和拉格1. 其中p1, p2...
  任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?(比如,在1到8之中,有多少个数与8构成互质关系?) 计算这个值的方法就叫做欧拉函数,以φ(n)表示。在1到8之中,与8形成互质关系的是1、3、5、7,所以 φ(n) = 4。 φ(n) 的计算方法并不复杂,但是为了得到最后那个公式,需要一步步讨论。 第一种情况 如果n=1,则 φ(1
欧拉函数:φ(n)表示从1~n-1中有多少个数与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 <...
### 回答2: 欧拉函数(Euler's totient function)是一个计算小于等于给定正整数n的所有与n互质的正整数的个数。以下是用Matlab实现欧拉函数的代码: ```matlab function euler = euler_function(n) euler = n; % 将结果初始化为n p = 2; % 从最小的素数2开始 while p * p <= n % 当p的平方大于n时结束循环 if mod(n, p) == 0 % 若n能整除p euler = euler - euler / p; % 将结果减去n除以p的值(贡献) while mod(n, p) == 0 % 如果n继续能整除p,则继续除以p n = n / p; p = p + 1; % 继续查找下一个素数 if n > 1 % 若n不为1,则n是一个大于sqrt(n)的质数 euler = euler - euler / n; % 将结果减去n除以n的值(贡献) 这个函数接受一个正整数n作为输入,并返回n的欧拉函数值。函数首先将结果初始化为n,然后从最小的素数2开始,一直遍历到sqrt(n)为止。如果n能被p整除,它将以p的贡献减少结果。然后继续查找下一个素数。最后,如果n不等于1,则n是一个大于sqrt(n)的质数,将其贡献减少结果。 希望以上的代码可以满足你的需求。 ### 回答3: 欧拉函数数论中一个重要的函数,用于计算小于n且与n互质的正整数的个数。欧拉函数的公式为:φ(n)=n×(1-1/p1)×(1-1/p2)×⋯×(1-1/pk)其中p1,p2,...,pk是n的所有质因数。 下面是求欧拉函数的MATLAB代码: ```matlab function result = euler_phi(n) result = n; for i = 2 : round(sqrt(n)) if (n % i == 0) result = result * (1 - 1/i); while (n % i == 0) n = n / i; if (n > 1) result = result * (1 - 1/n); 在这段代码中,我们首先将结果初始化为n。然后从2到sqrt(n)遍历,如果n能被i整除,则说明i是n的一个质因数。这时,我们将结果乘以(1-1/i),然后不断将n除以i直到n不能再被i整除为止。最后,如果n大于1,说明n本身也是一个质因数,我们将结果乘以(1-1/n)。 这段代码可以在MATLAB中调用,例如: ```matlab n = 12; result = euler_phi(n); disp(result); 这样就可以得到12的欧拉函数值。