`
lgh1992314
  • 浏览: 315577 次
文章分类
社区版块
存档分类
最新评论

快速幂取模

 
阅读更多

利用二进制扫描的方法快速的计算abmod c,显然用常规方法计算74237mod 4233计算量过大。

基本原理:(a×b)mod c=((amod c)×b)mod c

例如:35mod 7=3(101)2mod 7=((3(100)2mod 7)×3)mod 7=((9(10)2mod 7)×3)mod 7=(((9mod 7)(10)2mod 7)×3)mod 7=((2(10)2mod 7)×3)mod 7=((4(1)2mod 7)×3)mod 7=(4×3)mod 7=5

实现代码如下(C语言版)

int exp_mod(int a,int b,int n){
     int r=1;
     while(b){
         if(b&1)r=(r*a)%n;
         a=(a*a)%n;
         b>>=1;        
     }
     return r;
 }

时间复杂度分析:若a、b、n都是β位数,则所需算术运算的次数是O(β),所需位操作总次数是O(β3)
分享到:
评论

相关推荐

    C语言快速幂取模算法小结

    本文实例汇总了C语言实现的快速幂取模算法,是比较常见的算法。分享给大家供大家参考之用。具体如下: 首先,所谓的快速幂,实际上是快速幂取模的缩写,简单的说,就是快速的求一个幂式的模(余)。在程序设计过程中,...

    C++快速幂取模.cpp

    C++快速幂取模代码,可根据需要自行调整优化,刷题的时候计算溢出可以用它解决,算法入门代码,可以直接复制使用

    快速幂取模 c/c++

    快速幂取模,一个运算技巧,用的着的话可以下载看下,自己做题常用它,

    快速幂取模.pptx

    这是一个关于学习快速幂取模的PPT,里面包含了关于快速幂取模的编码模板以及各类知识点,同时还可以到本人博客中查询关于快速幂取模的例题链接(寒假培训—快速幂取模)同时配有个人题解。

    快速幂取模,大数幂次求模,a^p%m

    ### 快速幂取模算法详解 #### 一、引言 在计算机科学与数学领域中,快速幂取模(也称作模幂运算)是一种非常实用且高效的算法,广泛应用于密码学、信息安全以及高性能计算等领域。对于大整数的幂次运算与取模操作,...

    蒙格马利快速幂取模 C语言实现

    蒙格马利快速幂取模,O(log(n))的快速算法,基于二进制扫描。

    Java语言实现快速幂取模算法详解

    Java语言实现快速幂取模算法详解 快速幂取模算法是解决大数的小数取模问题的高效算法,java语言中可以使用快速幂取模算法来解决这个问题。快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在...

    快速幂_取模 python实现

    函数原型 power_n__module_p(x,n,p): x: 幂底 n: 指数 p: 模数 调用示例: power_n__module_p(3,97,353) 输出: 40

    高次幂取模

    C++代码写的;主要是搞ACM题目关于高次幂快速取模的代码,希望对你们有帮助;

    C++快速幂与大数取模算法示例

    快速幂与大数取模是计算机科学中两个重要的算法,特别是在处理大整数运算时,它们提供了高效且节省计算资源的解决方案。以下是这两种算法的详细解释。 **一、快速幂算法** 快速幂算法(Fast Power Algorithm)是...

    快速幂及其相关知识

    快速幂算法及其变体如快速幂取模,在现代计算科学中扮演着重要角色,尤其是在处理大数据集和高性能计算需求的场合下。通过合理利用二进制特性及同余定理,快速幂能够有效降低运算次数,提高计算效率。无论是理论研究...

    DEVC++入门资料2.pdf

    这份资料适合有基础者食用,涵盖了多个DEVC++相关的知识点,包括绝对值、平方根、枚举法、代码优化、铺地砖问题、快速幂取模、倒数求和等。 1. 绝对值:DEVC++中可以使用IF语句来实现绝对值的计算,即IF n>=0 THEN ...

    速幂算法C语言版(超详细).

    快速幂算法是指快速计算幂式的余数,即快速幂取模算法。它的主要应用场景是在程序设计过程中,需要快速计算大数的余数,以提高计算效率。 知识点2:快速幂算法的原始实现 原始的快速幂算法可以用以下公式表示:ans ...

    快速幂算法案例.rar

    快速幂算法,也被称为快速幂取模或Exponentiation by Squaring,是一种高效的计算大整数幂的方法,尤其在处理模运算时更为显著。在计算机科学和算法设计中,快速幂算法是解决“求a的b次方对c取模”的问题时的一种...

    Rabin-Miller快速素数测试

    在提供的文件列表中,"Rabin-Miller.h"可能包含了Rabin-Miller素数测试的函数声明和定义,"modexp.h"可能实现了快速幂取模的蒙格马利乘法算法,而"bool.h"可能是包含布尔类型定义和相关操作的头文件。这些文件共同...

    C 语言计算 2 的 2023 次方除 1000 的余数.pdf

    2的2023次方除1000的余数在这个示例中,我们定义了一个 `powMod` 函数,它实现了快速幂取模算法。该算法利用了指数的二进制表示和模运算的特性,在每一步中将指数折半,同时计算底数的幂,然后根据指数的当前位是否...

    RSA加密算法C语言实现.docx

    在实际的C语言实现中,你需要创建函数来实现这些步骤,包括素数检测、欧几里得算法、快速幂取模等。这涉及到数值计算库的使用,以及可能的自定义大数运算实现。同时,需要考虑到安全性和效率,比如大数操作的优化、...

    大数计算器(支持大素数判定)

    快速A^B%C运算,也就是快速幂取模,是一种优化的算法,常用于计算a的b次方对c取模的结果。这个操作在模数理论和密码学中尤为重要,因为它可以高效地计算大数的指数。快速幂取模算法基于分治思想,将指数分解,通过...

    Gcd10928192.rar

    厄拉多塞筛法、欧几里得算法、快速幂取模、中国剩余定理以及素性检测算法是密码学中的重要基础知识,特别是在涉及到大整数运算和安全性的实验中。下面将对这些知识点进行详细阐述。 首先,厄拉多塞筛法(Sieve of ...

Global site tag (gtag.js) - Google Analytics