关闭

乘方取模计算(模幂计算)

1362人阅读 评论(0) 收藏 举报
分类:

乘方取模计算也称为模幂计算,在密码系统中经常使用,是不可缺少的。

使用本程序可以解HDU2035,只需要考虑输入和输出。

/*
 * 乘方取模
 *
 * 已知给定的正整数a、n和m,计算x的值,a^n = x (mod m)。
 *
 * 二分法用在这里也很有效果。
 */

#include <stdio.h>

long powermod(long a, long n, long m)
{
    long res = 1L;
    while(n) {
        if(n & 1L) {
            res *= a;
            res %= m;
        }
        a *= a;
        a %= m;
        n >>= 1;
    }
    return res;
}

int main(void)
{
    printf("a=%ld, n=%ld, m=%ld, x=%ld\n", 7L, 3L, 41L, powermod(7L, 3L, 41L));

    return 0;
}


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

[POJ]1001 乘方计算

Description Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the ...
  • i61939908
  • i61939908
  • 2016-03-23 22:26
  • 54

利用C语言写一个可以进行乘方运算的程序

要求:利用C语言写一个可以进行乘方运算的程序,不允许使用库中的pow函数;分析:本身C语言自带的库pow函数就是是乘方运算,然而题目要求是不能利用pow函数。那么我们怎么实现乘方的功能呢?我们分析一下,乘方,即计算x的y次方,也就是说将y个x相乘。于是我们只需要做一个计数器i,循环y次,每一次使x乘...
  • xiaoyuge16
  • xiaoyuge16
  • 2016-05-10 13:09
  • 3322

快速计算乘方的算法

其实很简单,原理就是两部: 1. 把乘方数,转换为以2为基底的一个乘方数; 2. 把多个数相乘,转换为自乘,来快速升高幂次数。 利用的公式和例子如下。 要证明最上面的公式也比较简单,等式两边取对数就很简单就能证明了。
  • lff0305
  • lff0305
  • 2015-12-06 10:06
  • 2177

乘方算法

一般的乘方算法,时间复杂度是O(n)非递归方式int Power(int num, int exponent) { int result = 1; while (exponent) { if (exponent & 1) { resul...
  • yangquanhui1991
  • yangquanhui1991
  • 2015-09-11 16:53
  • 556

模幂运算的几种解决方法

模幂运算是RSA的核心算法,最直接地决定了RSA算法的性能。针对快速模幂运算这一课题,西方现代数学家提出了大量的解决方案,通常都是先将模幂运算转化为模乘运算。
  • delphiwcdj
  • delphiwcdj
  • 2010-10-28 23:59
  • 4712

快速幂取模算法详解

1.大数模幂运算的缺陷: 快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源的,在整个计算过程中最麻烦的就是我们的5^1003这个过程 缺点1:在我们在之后计算指数的过程中,计算的数字不都拿得增大,非常的占用我...
  • ltyqljhwcm
  • ltyqljhwcm
  • 2016-11-05 10:40
  • 13841

【日常学习】【数学】【矩阵乘法】【大数乘方取模】codevs1982 加密算法题解

题目描述 Description Rivest是密码学专家。近日他正在研究一种数列E={E[1],E[2],……,E[n]}, 且E[1]=E[2]=p(p为一个质数),E[i]=E[i-2]*E[i-1] (若2 例如{2,2,4,8,32,256,8192,……}就是p=2的...
  • ametake
  • ametake
  • 2015-11-02 19:52
  • 836

大数模板(加减乘除取模开方)

高精度大数模板
  • AcmHonor
  • AcmHonor
  • 2015-07-15 16:00
  • 1469

java实现RSA大数乘方取模运算

通过数学同模定理,很快的将大数乘方变成数次乘法,大大减少了计算量,加速RSA数据加减密过程
  • liandao02
  • liandao02
  • 2017-10-24 08:46
  • 194

FFT多项式快速幂,对于x^num取模,顺便再模一个998244353

多项式快速幂 时间限制 : 60000 MS 空间限制 : 524288 KB问题描述:给一个n次多项式,求它的k次方。没关系,随手模一个998244353就行了。没关系,再随手模一个xm就行了。输入格式:第一行n,意义如上。 第二行n+1个数,a0,a1,…,an,分别是0,1,…,n次项...
  • INCINCIBLE
  • INCINCIBLE
  • 2017-02-05 22:11
  • 639
    个人资料
    • 访问:909492次
    • 积分:20720
    • 等级:
    • 排名:第452名
    • 原创:1086篇
    • 转载:87篇
    • 译文:0篇
    • 评论:403条
    文章分类
    博客专栏
    最新评论