之前在学习密码学的过程中接触了miller-rabin 的素性检测,要求对一个大数进行判断它是否是素数。在算法的过程中,需要计算a^b mod c的值。
如果直接进行 a^b 再 mod c 的话 ,即使 使用python忽略掉精度方面的限制,但是 依然因为长度太大会再电脑上跑上很久一段时间。
于是我们需要对这个操作进行算法上的优化。
方案1:
快速指数幂:
通过递归的形式计算出a^b mod c
代码大致如下:
如果直接进行 a^b 再 mod c 的话 ,即使 使用python忽略掉精度方面的限制,但是 依然因为长度太大会再电脑上跑上很久一段时间。
于是我们需要对这个操作进行算法上的优化。
方案1:
快速指数幂:
通过递归的形式计算出a^b mod c
代码大致如下: