取模性质:
(a+b)%p = (a%p + b%p)%p
(a*b)%p = ((a%p) * (b%p) )%p
举例:
求 a的b次幂对p取模的数字
public class Main{
public static int f(int a, int n, int p) {
int x = 1;
for (int i=0; i<n; i++) {
x = (x * a) % p;
}
return x;
}
public static void main(String[] args) {
int a = 3;
int n = 3;
int p = 5;
System.out.println(f(a, n, p));
}
}
这里有一点要注意,如果先求a的n次幂,得到结果再取模,那么结果有可能太大超出了范围,
因此这里利用取模的性质,在每一步计算中都取模,从而使程序可以求解。