欧拉函数 欧拉筛法

欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示。特殊的,φ(1)=1。

若p是质数,显然有φ(p)=p-1。

计算公式:φ(N)=N*(1-1/P1)*(1-1/P2)*...*(1-1/Pn)

欧拉函数是积性函数,但不是完全积性函数。即当且仅当x和y互质时,有phi(x,y)=phi(x)*phi(y),证明显然。

欧拉函数的一些性质:

n为奇数时,φ(2n)=φ(n)

若p为质数,n=p^k,则φ(n)=p^k-p^(k-1)

n>2时,φ(n)一定为偶数

小于n的数中,与n互质的数的总和为:φ(n) * n / 2

n的因数(包括1和它自己)的欧拉函数之和等于n

单个欧拉函数可以在sqrt(n)计算出来

int euler(int n){
    int m=sqrt(n)+1;
    int ans=n;
    for(int i=2;i<=m;i++)
        if(n%i==0){
            ans=ans/i*(i-1);
            while(n%i==0)n/=i;
        }
    if(n>1)ans=ans/n*(n-1);//如果n是质数ans=n-1,否则ans不会变
    return ans;
}

欧拉筛法同时求欧拉函数

void euler(int n)
{
    phi[1]=1;
    for (int i=2;i<=n;i++)
    {
        if (isprime[i]==0)
        {
            prime[++num]=i;
            phi[i]=i-1;
        }
        for (int j=1;j<=num&&prime[j]*i<=n;j++){
            isprime[i*prime[j]]=1;
            if (i%prime[j]==0)
            {
                phi[i*prime[j]]=phi[i]*prime[j];
                                break;
                        }
            else phi[i*prime[j]]=phi[i]*phi[prime[j]];
        }
    }
}
                

欧拉定理:a和p互质时,a^φ(p)≡1 (mod p),a在模p意义下的逆元为a^(φ(p)-1)

费马小定理:p为质数且a不为p的倍数时,a^(p-1)≡1 (mod p),a在模p意义下的逆元为a^(p-2)

可以用来处理大指数

原文地址:https://www.cnblogs.com/xutianshu/p/10618670.html

时间: 2024-10-16 17:24:01

欧拉函数 欧拉筛法的相关文章

【poj2478-Farey Sequence】递推求欧拉函数-欧拉函数的几个性质和推论

http://poj.org/problem?id=2478 题意:给定一个数x,求<=x的数的欧拉函数值的和.(x<=10^6) 题解:数据范围比较大,像poj1248一样的做法是不可行的了. 首先我们要了解欧拉函数的几个性质和推论:(今天跟好基友Konjak魔芋讨论了好久..) 推论(一): phi(p^k)=(p-1)*p^(k-1) 证明: 令n=p^k,小于等于n的正整数数中,所有p的倍数共有p^k /p = p^(k-1)个. 1~n出去p的倍数,所以phi(n)= n -  p^

√n求单值欧拉函数

基本定理: 首先看一下核心代码: 核心代码 原理解析: 当初我看不懂这段代码,主要有这么几个问题: 1.定理里面不是一开始写了一个n*xxx么?为什么代码里没有*n? 2.ans不是*(prime[i]-1)么?为什么到了第二个while循环变成*prime[i]了? 3.定理里面不是要/pi么?为什么代码里没有/pi????????????? 公式化简 首先我们来分析一下整个程序的原理,如果把程序的原理搞明白了,这三个问题也就自然而然的解决了 这个程序的原理是基于唯一分解定理: 那么我们可以把

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

【数论】欧拉函数

欧拉函数φ      欧拉定理是用来阐述素数模下,指数同余的性质.      欧拉定理:对于正整数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-

[数论]欧拉函数&素数筛

一.欧拉函数 欧拉函数是小于x的整数中与x互质的数的个数,一般用φ(x)表示. 通式: 其中p1, p2--pn为x的所有质因数,x是不为0的整数. 比如x=12,拆成质因数为12=2*2*3, 12以内有1/2的数是2的倍数,那么有1-1/2的数不是2的倍数(1,3,5,7,9,11), 这6个数里又有1/3的数是3的倍数, 只剩下(1 - 1/2 - 1/3)的数既不是2的倍数,也不是3的倍数(1,5,7,11). 这样剩下的12*(1 - 1/2 - 1/3)=4,即4个数与12互质,所以

杭电ACM1286——找新朋友~欧拉函数的应用

欧拉函数 欧拉函数,对于正整数n,欧拉函数就是小于或者等于n的数中与n互质的数的数目. 通式为: F(x) = x * (1 - 1 / p1) * (1 - 1 / p2) * ....... * (1 - 1 / pn):p1,p2,p3.....pn为x的质因子.每一质因子只出现一次.即p1 ≠ p2 ≠ ....pn: 例如12 = 2 * 2 * 3:2只能算一次. 有了这个欧拉通式,便可以快速的求解这一题,该开始我是用普通的方法做的,很明显,超时了,一次输入的数很多个的时候,便容易超

欧拉函数各种性质

欧拉函数 欧拉函数,符号记作\(\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}\) \[

数论快速入门(同余、扩展欧几里德、中国剩余定理、大素数测定和整数分解、素数三种筛法、欧拉函数以及各种模板)

数学渣渣愉快的玩了一把数论,来总结一下几种常用的算法入门,不过鶸也是刚刚入门, 所以也只是粗略的记录下原理,贴下模板,以及入门题目(感受下模板怎么用的) (PS:文中蓝色字体都可以点进去查看百度原文) 附赠数论入门训练专题:点我打开专题(题目顺序基本正常,用以配套数论入门) 一.同余定理 简单粗暴的说就是:若 a-b == m 那么 a%m == b%m 这个模运算性质一眼看出...直接上入门水题: Reduced ID Numbers 附AC代码(这个也没啥模板....知道就好) #inclu

poj 2478 Farey Sequence(基于素数筛法求欧拉函数)

http://poj.org/problem?id=2478 求欧拉函数的模板. 初涉欧拉函数,先学一学它基本的性质. 1.欧拉函数是求小于n且和n互质(包括1)的正整数的个数.记为φ(n). 2.欧拉定理:若a与n互质,那么有a^φ(n) ≡ 1(mod n),经常用于求幂的模. 3.若p是一个质数,那么φ(p) = p-1,注意φ(1) = 1. 4.欧拉函数是积性函数: 若m与n互质,那么φ(nm) = φ(n) * φ(m). 若n = p^k且p为质数,那么φ(n) = p^k - p