日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

米勒罗宾素性测试(Miller–Rabin primality test)

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 米勒罗宾素性测试(Miller–Rabin primality test) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

 1 #include<iostream>   //該程序為哥德巴赫猜(想輸出所有的組合)
 2 #include<cmath>
 3 #include<cstdlib>
 4 #include<ctime>
 5 #include<cstdio>
 6 
 7 using namespace std;
 8 
 9 typedef unsigned long long ull;
10 typedef unsigned long long LL;
11 
12 LL prime[6] = {2, 3, 5, 233, 331};
13 LL qmul(LL x, LL y, LL mod) { // 乘法防止溢出, 如果p * p不爆LL的話可以直接乘; O(1)乘法或者轉化成二進制加法
14 //快速乘法取模算法
15 
16     return (x * y - (long long)(x / (long double)mod * y + 1e-3) *mod + mod) % mod;
17     /*
18     LL ret = 0;
19     while(y) {
20         if(y & 1)
21             ret = (ret + x) % mod;
22         x = x * 2 % mod;
23         y >>= 1;
24     }
25     return ret;
26     */
27 }
28 
29 LL qpow(LL a, LL n, LL mod) {
30     LL ret = 1;
31     while(n) {
32         if(n & 1) ret = qmul(ret, a, mod);
33         a = qmul(a, a, mod);
34         n >>= 1;//n=n/2二進制乘除法
35     }
36     return ret;
37 }
38 
39 
40 bool Miller_Rabin(LL p) {
41     if(p < 2) return 0;
42     if(p != 2 && p % 2 == 0) return 0;
43     LL s = p - 1;
44     while(! (s & 1)) s >>= 1;//排除掉偶數
45     for(int i = 0; i < 5; ++i) {
46         if(p == prime[i]) return 1;
47         LL t = s, m = qpow(prime[i], s, p);
48         //二次探測定理卡米歇爾數保證該數為素數
49         //卡米歇爾數若一個數為合數當0<x<p,則方程x^p≡a(mod p)
50         //二次探測定理如果p是一個素數,0<x<p,則方程x^2≡1(mod p)的解為x=1,p-1
51         while(t != p - 1 && m != 1 && m != p - 1) {
52             m = qmul(m, m, p);
53             t <<= 1;
54         }
55         if(m != p - 1 && !(t & 1)) return 0;//不是奇數且m!=p-1
56     }
57     return 1;
58 }

?

轉載于:https://www.cnblogs.com/Fy1999/p/8908462.html

總結

以上是生活随笔為你收集整理的米勒罗宾素性测试(Miller–Rabin primality test)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。