例如:要求123456的123456789022355 次方 % 2345678123456如何求的结果?谢谢,给个算法好不好?

解决方案 »

  1.   

    网上有这方面的库,你可以找一下,或者到www.pediy.com算法栏去问一下哈
      

  2.   

    你说的是幂模运算吧,可以转化成乘模运算的。
    有如下公式 :(a*b) mod c = ((a mod c) * (a mod b)) mod c  
    设 
    x0 = a mod c
    x1 = (a^2) mod c = ((a mod c) * (a mod c)) mod c
    x2 = (a^3) mod c = ((a^2 mod c) * (a mod c)) mod c = (x1 * x0) mod c
    (a^4) mod c =((a^2 mod c) * (a^2 mod c)) mod c = (x1 * x1) mod c
    (a^5) mod c = (x1 * x5) mod c
    .......
    依此类推,每次用的都是以前求模的结果,大数规模不会膨胀的很厉害,如果直接求幂的话,一个n位大数就会达到n^m位,很恐怖的,呵呵
    希望以上一点推导对你有所提示
      

  3.   

    HugeCalc 中有直接的函数 PowMod() 可完成:http://maths.myrice.com/software.htm#02