首页 > 其他分享 >欧拉降幂

欧拉降幂

时间:2024-03-29 17:35:25浏览次数:26  
标签:phi 降幂 varphi base long 欧拉 mod

img

什么是欧拉降幂

欧拉函数(Euler's Totient Function)是指小于等于n的正整数中与n互质的数的个数,通常用符号φ(n)表示。对于一个正整数n,φ(n)表示满足条件的数的个数。

当计算\(a^b \mod n\)时,如果\(a\)和\(n\)互质(即它们的最大公约数为1),那么我们可以利用欧拉函数的性质来简化计算。

欧拉函数\(\varphi(n)\)给出了小于等于\(n\)且与\(n\)互质的正整数的个数。根据欧拉定理,如果\(a\)和\(n\)互质,那么有:
\(a^{\varphi(n)} \equiv 1 \pmod{n}\)

这意味着\(a\)的\(\varphi(n)\)次幂与1对\(n\)取模的结果为1。

现在,考虑指数\(b\)。我们可以将\(b\)表示为:
\(b = k \cdot \varphi(n) + r\)

其中,\(k\)是一个整数,\(r\)是\(b\)除以\(\varphi(n)\)的余数,满足\(0 \leq r < \varphi(n)\)。

将这个表达式代入指数幂的计算中,得到:
\(a^b = a^{k \cdot \varphi(n) + r}\)

根据模指数幂的性质,我们可以将指数分解为两部分相乘:
\(a^b = (a^{\varphi(n)})^k \cdot a^r\)

由于\(a^{\varphi(n)} \equiv 1 \pmod{n}\),所以第一部分为1,因此我们得到:
\(a^b \equiv a^r \pmod{n}\)

这意味着,我们可以将指数\(b\)取模到\(\varphi(n)\)的范围内,而不改变\(a^b \mod n\)的值。这样做可以显著降低指数幂的大小,从而提高计算效率,特别是在大数取模运算中。

img

img

c++代码
#include<bits/stdc++.h>
using namespace std;

const long long mod = 1e9+7;

long long fastpower(long long base, long long power){
    //快速降幂(模板来的)
    long long ans =1;
    base = base % mod;
    while(power > 0){
        if(power & 1){
            //如果指数是一个奇数
            ans = (ans * base) % mod;
        }
        //指数右移一位,底数平方取模
        base = (base * base) % mod;
        power >>= 1;
    }
    return ans % mod;
}

long long get_r(long long b, long long phi){
    //b = m!
    long long res = 1;
    for(int i =1; i<= b; i++){
        res = res * i % phi;
    }
    return res % phi;
}

long long eular(long long n){//计算欧拉函数
    long long phi = n;
    for(int i = 2; i <= n/i; i++){
        if(n % i) continue; //i不是n的因数
        while(n % i == 0){//
            n = n / i;
        }
        phi = phi * (i - 1) / i; //套公 式无需理解
    }
    if(n > 1) phi = phi * (n - 1) / n; //例如 12 = 2 * 2 * 33和12就是互质数万一最后一个数比i大比如3 > 2
    return phi;
}

int main(){
    long long n, m;
    cin >> n >> m;
    long long phi = eular(mod);//计算欧拉数
    long long r = get_r(m, phi);//计算r
    cout << fastpower(n, r) << endl;//计算a^r
    return 0;
}

标签:phi,降幂,varphi,base,long,欧拉,mod
From: https://www.cnblogs.com/kz7430/p/18103959

相关文章

  • VMware创建openEuler OS(欧拉)系统镜像虚拟机
    首先下载openEuler镜像文件,这里附上我使用的镜像版本链接:https://pan.baidu.com/s/1bCW7CGq05wGTM3VG_wks7A?pwd=ux5f 提取码:ux5f此处附上欧拉各版本网站openEuler下载|欧拉系统ISO镜像|openEuler社区官网下面开始安装步骤:蓝色框框内的选项自定义此处就创建好啦......
  • 欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理
     数据结构、算法总述:数据结构/算法C/C++-CSDN博客欧拉函数欧拉函数(Euler'stotientfunction)是一个与正整数n相关的数论函数,通常用φ(n)表示。定义为小于或等于n的正整数中与n互质的数的个数intphi(intx){intres=x;for(inti=2;i<=x/i;i++)......
  • 欧拉五边形数定理小记
    欧拉五边形数定理(Pentagonalnumbertheorem)约定\[\phi(x)=\prod_{n=1}^{\infty}(1-x^n)\]描述\[\begin{aligned}\phi(x)&=\sum_{k=-\infty}^\infty(-1)^kx^{k(3k-1)/2}\\&=1+\sum_{k=1}^{\infty}(-1)^k(x^{k(3k-1)/2}+x^{k(3k+1)/2})\end{aligned}\]......
  • 欧拉角位姿变换
    欧拉角姿态变换姿态B相对于姿态A的变换:欧拉角为rx,ry,rz,绕Z-Y-X轴进行旋转。那么姿态A相对于姿态B的变换:欧拉角为-rx,-ry,-rz,绕X-Y-Z轴进行旋转。doublerx,ry,rz,px,py,pz;rx=10;ry=20;rz=30;px=1;py=2;pz=3;std::c......
  • 图论—欧拉回路/路径
    前置知识:欧拉图(两个要点:1.是连通图才有欧拉回路2.是否满足出度和入度的要求)模板题:P7771【模板】欧拉路径-洛谷|计算机科学教育新生态(luogu.com.cn)欧拉回路1.•对于无向图,欧拉回路就是在图的所有结点的度都是偶数,并且图是连通的情况下,从任意一个节点开始dfs都可......
  • FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg
    FFmpeg支持Linux、macOS、Windows、Android等操作系统,其中Linux系列包括Ubuntu、Debian、Mint、CentOS、RHEL、Fedora等分支。FFmpeg官网的编译入口地址为https://trac.ffmpeg.org/wiki/CompilationGuide,在这里可以找到FFmpeg对各系统的编译说明。更多详细的FFmpeg开发知识参见《F......
  • java:欧拉公式e^ix==cosx+i*sinx 用Math类中的方法输出90°以内的欧拉函数数值,保留四位
    publicclassMain{//本题的要求:e^ix==cosx+i*sinxdoubleb,c;chari;publicstaticvoidmain(String[]args){for(doublej=0;j<90;j++){//用循环依次整出0-90度doublesum=0;//temp是e^ix;doublea=j;a=Math.toRadi......
  • C++实现欧拉筛法
    Euler筛法介绍以筛出100以内(含100)的所有素数为例来说明一下欧拉筛法的原理。和Eratosthenes筛法一样,Euler筛法也从2开始筛,但Eratosthenes筛法会把2的倍数一批全部筛掉,而Euler筛法用2筛时仅仅把2*2(即4)筛掉,而把其它偶数留到后面再筛掉,从而避免了一个偶数被多次筛除带来的性能开销,......
  • 欧拉函数学习笔记
    首先,\(\varphi(n)\)的值是\(n\)内与\(n\)互质的数的个数。//求n的欧拉函数值:phi[n]intgetPhi(intn){intans=n;for(inti=2;i*i<=n;i++){if(n%i==0){ans=ans*(i-1)/i;while(n%i==0)n/=i;......
  • 欧拉图(欧拉通路&欧拉回路)
    欧拉图(欧拉通路&欧拉回路)定义通过图中所有边恰好一次的通路称为欧拉通路。通过图中所有边恰好一次的回路称为欧拉回路。具有欧拉回路的无向图或有向图称为欧拉图。具有欧拉通路但不具有欧拉回路的无向图或有向图称为半欧拉图。有向图也可以有类似的定义。非形式化地讲,欧拉......