
miller-rabin matlab,Miller-Rabin素数判断算法
将n分解为n=1+d*2^s的形式,并初始化s和d。 生成区间[2, n-2]内的随机数a。 计算a^d mod n的值,记为x。 如果x=1或x=n-1,则a通过测试,继续下一个随机数。 否则,对每个r=0到s-1,计算x = x^2 mod n: 如果所有a都通过测试,则n是素数。
发布日期:2025-04-14 02:39:50
浏览次数:8
分类:精选文章
本文共 1508 字,大约阅读时间需要 5 分钟。
Miller-Rabin素数判断算法是现代密码学中广泛应用的素数测试方法。该算法通过将奇数n表示为n=1+d*2^s的形式,然后测试随机选择的数a是否满足特定模运算条件来判断n是否为素数。
具体步骤如下:
- 如果x=n-1,则a通过测试,继续下一个随机数。
- 如果x≠n-1且x≠1,则n不是素数。
代码实现如下:
#include#include // rand()#include // srand()using namespace std;void Reduce(int nn, int &s, int &d) { while (d % 2 == 0) { d /= 2; s++; }}bool Witness(int n, int x, int a, int d, int s) { if (x != 1 && x != n - 1) { for (int r = 0; r < s; r++) { x = (x * x) % n; if (x == n - 1) { return true; } } return false; } return true;}int mod_power(int M, int N, int n) { int R = 1; for (int i = 0; i < N; R = (R * M) % n) { ; } return R;}bool Re_loop(int n, int K, int d, int s) { for (int j = 0; j < K; j++) { int a = 2 + rand() % (n - 3); int x = mod_power(a, d, n); if (x == 1 || x == n - 1) { continue; } if (!Witness(n, x, a, d, s)) { return false; } } return true;}int main() { int n = 1221; int s = 0, d = n - 1; Reduce(n, s, d); if (Re_loop(n, 7, d, s)) { cout << "It is a prime in a chance 1-4^(-7)." << endl; } else { cout << "It is composite." << endl; } return 0;}
该实现通过模拟多次测试来提高准确性。每次测试选择不同的a值,减少了错误率。通过设置K次测试,错误概率被降低到10^-7,确保结果的准确性。
发表评论
最新留言
很好
[***.229.124.182]2025年05月22日 12时41分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Mac OS X汇编语言常识
2025-04-11
Mac os 如何安装SVN
2025-04-11
Mac OS下错误The superclass “javax.servlet.http.HttpServlet“ was not found on the Java Build Path的解决方法
2025-04-11
Mac os如何安装绿盾客户端
2025-04-11
mac xmind 激活
2025-04-11
Mac 下 Python+Selenium 自动上传西瓜视频
2025-04-11
mac 下 react Native ios环境搭建
2025-04-11
Mac 下使用sourcetree操作git教程
2025-04-11
mac 下如何建立vue-cli项目
2025-04-11
Mac 在命令行快速切换目录 mark
2025-04-11
mac 安装PIL
2025-04-11
Mac 开发PhoneGap 应用,怎样加入插件 barcodescaner
2025-04-11
mac 搭建APK反编译环境[转]
2025-04-11
MAC 显示隐藏文件
2025-04-11
Mac 的“任务管理器” —— 活动监视器
2025-04-11
mac 配置环境变量,讲的太仔细了,非常棒
2025-04-11
mac-gradle的安装和配置
2025-04-11