首页 > 其他 > 详细

费马小定理优化优化多数的乘方

时间:2014-10-29 18:48:49      阅读:293      评论:0      收藏:0      [点我收藏+]

要求

a^b^c mod p

保证gcd(c,p)=1

用费马小定理

b:=quick_mod(b,c,p-1);

c:=quick_mod(a,b,p);

a^c mod p=a^(c mod phi(p)) mod p

而素数的phi函数是无需计算的,即p-1

推广到多个,依次降幂即可。不断应用快速幂。

 

var a,b,c,p,ans:int64;

function quickmod(a,b,p:int64):int64;
var ret:int64;
begin
      ret:=1;
      a:=a mod p;
      while b<>0 do
        begin
          if (b and 1)=1 then ret:=ret*a mod m;
          b:=b>>1;
          a:=a*a mod m;
        end;
      exit(ret);
end;

begin
      read(a,b,c,p);
      b:=quickmod(b,c,p-1);
      ans:=quickmod(a,b,m);
      writeln(ans);
end.

 

费马小定理优化优化多数的乘方

原文:http://www.cnblogs.com/logichandsome/p/4060044.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!