Can you give me the easy and understandable implementation of Miller Rabin in C++?
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | jiangly | 3670 |
| 3 | Kevin114514 | 3657 |
| 4 | maroonrk | 3355 |
| 5 | Um_nik | 3353 |
| 6 | squareOf105 | 3346 |
| 7 | tourist | 3343 |
| 8 | strapple | 3324 |
| 9 | heuristica | 3322 |
| 10 | jiangbowen | 3291 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 158 |
| 2 | nik_exists | 150 |
| 2 | maspy | 150 |
| 4 | AmShZ | 144 |
| 5 | Um_nik | 141 |
| 6 | Errichto | 139 |
| 7 | adamant | 137 |
| 8 | BledDest | 134 |
| 9 | maroonrk | 133 |
| 10 | qwexd | 130 |
| Name |
|---|



https://cp-algorithms.com/algebra/primality_tests.html#toc-tgt-2
but it gives wrong output in some cases. Example: 999999999999999989 its a prime number but the output is its a composite number.
Are you sure? I just tried it, and
MillerRabin(999999999999999989LL)returnstrue, indicating that it is probably prime.You must made an error calling the function (maybe you forgot to mark it as a long long number?).
Also, if you want to go safe, just use the deterministic Miller-Rabin code, from the next section.