miller_rabin 模板
生活随笔
收集整理的這篇文章主要介紹了
miller_rabin 模板
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
miller_rabin 模板
ll quick_mult(ll a, ll b, ll mod) {ll ans = 0;while(b) {if(b & 1) ans = (ans + a) % mod;a = (a + a) % mod;b >>= 1;}return ans; }ll quick_pow(ll a, ll n, ll mod) {ll ans = 1;while(n) {if(n & 1) ans = quick_mult(ans, a, mod);a = quick_mult(a, a, mod);n >>= 1;} return ans; }bool miller_rabin(ll n) {if(n == 2) return true;if(n < 2 || !(n & 1)) return false;ll s = 0, d = n - 1;while(!(d & 1)) {d >>= 1;s++;}srand(time(0));for(int i = 1; i <= 5; i++) {ll a = rand() % (n - 2) + 2;ll now = quick_pow(a, d, n), pre = now;for(int j = 1; j <= s; j++) {now = quick_mult(now, now, n);if(now == 1 && pre != 1 && pre != n - 1) return false;pre = now;}if(now != 1) return false;}return true; }總結
以上是生活随笔為你收集整理的miller_rabin 模板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无线键盘失灵了无线键盘失灵了什么情况
- 下一篇: 常见的电脑报错及解决方法电脑如何报错