@@ -14,7 +14,7 @@ fn safe_mod(mut x: i64, m: i64) -> i64 {
14
14
x
15
15
}
16
16
17
- /// Fast moduler by barrett reduction
17
+ /// Fast modular by barrett reduction
18
18
/// Reference: https://en.wikipedia.org/wiki/Barrett_reduction
19
19
/// NOTE: reconsider after Ice Lake
20
20
struct Barrett {
@@ -76,7 +76,7 @@ impl Barrett {
76
76
/// # Returns
77
77
/// `(x ** n) % m`
78
78
/* const */
79
- fn pow_mod_constexpr ( x : i64 , mut n : i64 , m : i32 ) -> i64 {
79
+ fn pow_mod ( x : i64 , mut n : i64 , m : i32 ) -> i64 {
80
80
if m == 1 {
81
81
return 0 ;
82
82
}
@@ -100,7 +100,7 @@ fn pow_mod_constexpr(x: i64, mut n: i64, m: i32) -> i64 {
100
100
/// # Parameters
101
101
/// * `n` `0 <= n`
102
102
/* const */
103
- fn is_prime_constexpr ( n : i32 ) -> bool {
103
+ fn is_prime ( n : i32 ) -> bool {
104
104
let n = n as i64 ;
105
105
match n {
106
106
_ if n <= 1 => return false ,
@@ -114,7 +114,7 @@ fn is_prime_constexpr(n: i32) -> bool {
114
114
}
115
115
for & a in & [ 2 , 7 , 61 ] {
116
116
let mut t = d;
117
- let mut y = pow_mod_constexpr ( a, t, n as i32 ) ;
117
+ let mut y = pow_mod ( a, t, n as i32 ) ;
118
118
while t != n - 1 && y != 1 && y != n - 1 {
119
119
y = y * y % n;
120
120
t <<= 1 ;
@@ -175,7 +175,7 @@ fn inv_gcd(a: i64, b: i64) -> (i64, i64) {
175
175
/// @param m must be prime
176
176
/// @return primitive root (and minimum in now)
177
177
/* const */
178
- fn primitive_root_constexpr ( m : i32 ) -> i32 {
178
+ fn primitive_root ( m : i32 ) -> i32 {
179
179
match m {
180
180
2 => return 1 ,
181
181
167_772_161 => return 3 ,
@@ -210,7 +210,7 @@ fn primitive_root_constexpr(m: i32) -> i32 {
210
210
}
211
211
let mut g = 2 ;
212
212
loop {
213
- if ( 0 ..cnt) . any ( |i| pow_mod_constexpr ( g, ( ( m - 1 ) / divs[ i] ) as i64 , m) == 1 ) {
213
+ if ( 0 ..cnt) . any ( |i| pow_mod ( g, ( ( m - 1 ) / divs[ i] ) as i64 , m) == 1 ) {
214
214
break g as i32 ;
215
215
}
216
216
g += 1 ;
0 commit comments