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

1645人阅读 评论(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;
}


查看评论

求乘方取模(快速幂+慢速乘法模板)

求乘方取模题目描述 Description 给定非负整数A、B、M,求(A ^ B) mod M。 输入描述 Input Description 包含多组输入,输入处理到EOF。 每组输入仅一...
  • cax1165
  • cax1165
  • 2016-08-23 20:21:29
  • 564

BestCoder #80 - 1002 快速乘法取模

题目链接: BestCoder #80 - 1002 Segment 刚开始特别迷茫,后来发现x+y=q,而且y=(q-i)/i*x,化简一下就是(x+y)=q/i。那么根据题目的描述,q是质数,所...
  • Kiritow
  • Kiritow
  • 2016-04-16 20:46:18
  • 1220

乘方取模和矩阵快速幂

1.乘方取模问题:已知给定的正整数a,n,m,计算x的值,使a^n=x(mod(m))。最简单代码:(复杂度为O(n))ans=1; for(i=0;i&amp;lt;n;i++) {     ans...
  • qq_38939675
  • qq_38939675
  • 2018-03-17 18:42:57
  • 13

快速幂取模算法详解

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

模幂运算的几种解决方法

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

大数幂模运算

我们知道对于像 7%2,3%5这样的题,计算机很容易算出它们的结果,但是如果我们需要计算 7^123456789%65536这样的值呢,这时普通的计算方式可能就要花费很久的时间了,有没有简单的方法可以...
  • cain4578369
  • cain4578369
  • 2017-05-25 12:05:27
  • 916

快速幂取模运算

1.模取运算的性质 (1)(a+b)%c = ((a%c)+(b%c))%c (2)(a*b)%c = ((a%c)*b)%c 2.快速幂乘计算a^b (1)a,b都为正数,将b二进制化 (...
  • stven_king
  • stven_king
  • 2015-12-18 18:13:56
  • 513

快速幂取模算法【模板】

快速幂取模其实是a^b%c,这就是著名的RSA公钥加密的方法,当a,b都很大的时候,直接求是不可取的,所以就用到了快速幂取模。 首先你得明白他的原理,其实是用到了二分的思想,把b按照二进制展开 b =...
  • u013486414
  • u013486414
  • 2015-01-01 14:24:57
  • 5187

快速幂取模详解(C语言版)

在百度文库上下载的快速幂详解,作者给出快速幂算法的完整解释(虽然我也还没看懂,但是确实写的很好,正在仔细研究中)用的是C语言,不同语言的读者只好换个位啦,毕竟读C的人较多~(原网址http://wen...
  • baidu_20363843
  • baidu_20363843
  • 2015-11-01 16:44:45
  • 3521

模运算与幂运算

模运算与幂运算          你需要花多少时间做下面这道题:     123456789 * 987654321 = (      )       A. 12193263111263526...
  • ZLambert
  • ZLambert
  • 2017-03-24 23:13:49
  • 401
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 115万+
    积分: 2万+
    排名: 312
    文章分类
    博客专栏
    最新评论