质数判断(5种方法)

1.普通枚举所有因数

if(n<2) return 0;
if(n==2) return 1;
for(int i=2;i<=n/2;++i) if(!(n%i)) return 0;
return 1;

2.枚举所有因数对中较小的部分(到sqrt(n))

if(n<2) return 0;
if(n==2) return 1;
int tmp=sqrt(n)//注意,n为大整数时STL的sqrt会有精度误差,要手写二分求根
for(int i=2;i<=tmp;++i) if(n%i==0) return 0;
return 1;

3.模6法

if(n<2) return 0;
if(n==2) return 1;
if(n%6!=1&&n%6!=5) return 0;
int tmp=sqrt(n);
for(int i=5;i<=tmp;i+=6) if(n%i==0||num%(i+2)==0) return 0;
return 1;​

4.费马素性测试

以费马小定理“如果p是一个质数,而整数a不是p的倍数,则有a^(p-1)≡1(mod p)”

的逆命题“如果a^(p-1)≡1(mod p),整数a不是p的倍数,则p为素数”为原理,取任意a,以快

速幂计算结果,若为1,则该数为素数。

但会有一些数满足费马小定理的逆命题而不是素数,因此,引入随机数a做多次测试,即

Miller_rabin素性测试

5.Miller_rabin素性测试

long long fast_pow(long long x,long long y,int m)
{long long res=1;x%=m;while(y){if(y&1) res=(res*x)%m;x=(x*x)%m;y>>=1;}return res;
}
bool witness(long long a,long long n)
{long long u=n-1;int t=0;while(u&1==0) u>>=1,t++;long long x1,x2;x1=fast_pow(a,u,n);for(int i=1;i<=t;i++){x2=fast_pow(x1,2,n);if(x2==1&&x1!=1&&x1!=n-1) return true;x1=x2;}if(x1!=1) return true;else return false;
}
int miller_rabin(long long n,int s)
{if(n<2) return 0;if(n==2||n==3||n==5) return 1;if(n%2==0||n%3==0||n%5==0) return 0;for(int i=0;i<s&&i<n;i++){long long a=rand()%(n-1)+1;if(witness(a,n)) return 0;}return 1;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kettle-Docker部署+Sqlserver数据同步Mysql+Start定时任务

一. 背景介绍 1. ETL是什么 ETL&#xff08;Extract-Transform-Load&#xff09;&#xff0c;即数据抽取、转换、装载的过程。它是一种思想&#xff0c;主要是说&#xff0c;从不同的数据源获取数据&#xff0c;并通过对数据进行处理&#xff08;格式&#xff0c;协议等转换&a…

Java-12a.Spring 中通过 TaskDecorator 配置默认异步线程池

Java-12.Spring 中通过 ThreadPoolTaskExecutor 和 AsyncConfigurerSupport 配置默认异步线程池 前言 在Spring框架中&#xff0c;TaskDecorator 是一个接口&#xff0c;它可以用来自定义由 ThreadPoolTaskExecutor 或其他任务执行器管理的任务的装饰行为。这通常用于在执行任…

第32关 k8s集群管理开源神器 - k9s

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维。 随着我们管理维护的K8S集群上线&#xff0c;怎么管理好集群上面成百上千的服务pod&#xff0c;就是我们该操心的事情了。这里博哥把在生产中一直在用的一个开源管理工具k8s&#xff0c;github…

Jenkins如何从GIT下拉项目并启动Tomcat

一、先添加服务器 二、添加视图 点击控制台输出&#xff0c;滑到最下面&#xff0c;出现这个就说明构建成功了&#xff0c;如果没有出现&#xff0c;说明构建有问题&#xff0c;需要解决好问题才能启动哦~

C++实现通讯录管理系统

目录 1、系统需求 2、创建项目 2.1 创建项目 3、菜单功能 4、退出功能 5、添加联系人 5.1 设计联系人结构体 5.2 设计通讯录结构体 5.3 main函数中创建通讯录 5.4 封装联系人函数 5.5 测试添加联系人功能 6、显示联系人 6.1 封装显示联系人函数 7、删除联系人 7.1…

GPT栏目:yarn 安装

GPT栏目&#xff1a;yarn 安装 一、前言 在跟GPT交互的时候&#xff0c;发现最近gpt4给出的答案率有了比较明显的提高&#xff0c;简单记录一下&#xff0c;我用gpt4拿到的答案吧。 本人已按照这个步骤成功 二、具体步骤 要安装 yarn&#xff0c;你可以按照以下步骤进行操作…

MyBatis常见面试题汇总

说一下MyBatis执行流程&#xff1f; MyBatis是一款优秀的基于Java的持久层框架&#xff0c;它内部封装了JDBC&#xff0c;使开发者只需要关注SQL语句本身&#xff0c;而不需要花费精力去处理加载驱动、创建连接等的过程&#xff0c;MyBatis的执行流程如下&#xff1a; 加载配…

Google Chrome 常用的几个参数

1 右键--Google Chrome--属性--目标 参数作用--disable-infobars此计算机将不会再收到 Google Chrome 更新&#xff0c;因为 Windows XP 和 Windows Vista 不再受支持。适用于 xp、2003 的 49.x.x.x 版本。示例1--ingore-certificate-errors忽略证书错误--disable-background-…

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】

说明&#xff1a; 仅供学习使用。 一、题目描述 题目共4问&#xff0c;描述网络通信中的 帧传输时延&#xff08;Frame Delay&#xff09;、传播时延&#xff08;Propagation Delay&#xff09;&#xff0c;以及 链接利用率&#xff08;Link Utilization&#xff09; 的相关…

【NodeJS】005- NodeJS的NVM与express框架

1.NVM介绍与使用 1.介绍 nvm 全称 Node Version Manager 顾名思义它是用来管理 node 版本的工具,方便切换不同版本的Node.js 2.使用 nvm 的使用非常的简单,跟 npm 的使用方法类似 3.下载安装 首先先下载 nvm,下载地址 https://github.com/coreybutler/nvm-windows/rel…

Vue2:通过代理服务器解决跨域问题

一、场景描述 现在的项目大多数是前后端分离的。Vue前端项目通过ajax去请求后端接口的时候&#xff0c;会有同源策略的限制。从而产生跨域问题。 二、基本概念 1、什么是同源策略&#xff1f; 就是前端服务和后端服务的协议名&#xff0c;IP或主机名&#xff0c;端口号不完…

0x02递推与递归

0x02递推与递归 递推者&#xff0c;自小而大&#xff0c;循序渐进&#xff1b;递归者&#xff0c;由上而下&#xff0c;分而治之 文章目录 0x02递推与递归例题T1&#xff1a;T2&#xff1a;T3&#xff1a;T4:T5T6 例题 T1&#xff1a; 92. 递归实现指数型枚举 - AcWing题库 …

Mysql 插入数据

1 为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值。基本语法格式为&#xff1a; INSERT INTO table_name (column_list) VALUES (value_list); 使用INSERT插入数据时&#xff0c;允许列名称列表column_list为空&#xff0c;此时&…

网络安全战略中的法律问题

文章目录 前言一、各国网络安全的法律需求陡增二、战争的多维化使对法律的需求也越加多样(一)从平时到战时,网络斗争的平战模糊性增加法律适用难度(二)从高维到低维,博弈的多维性使法律需求层次更加丰富(三)从防御到进攻,网络空间的攻防不均衡改变法律斗争重点三、各国…

flink分别使用FilterMap和ProcessFunction实现去重逻辑

背景 在日常的工作中&#xff0c;对数据去重是一件很常见的操作&#xff0c;比如我们只需要保留重复记录的第一条&#xff0c;而忽略掉后续重复的记录&#xff0c;达到去重的效果&#xff0c;本文就使用flink的FilterMap和ProcessFunction来实现去重逻辑 FilterMap和ProcessF…

Compose | UI组件(十) | Box,Surface - 帧布局

文章目录 前言Box 组件的参数说明Box 组件的使用Surface 的参数说明Surface 的使用 总结 前言 Box组件是 按子组件依次叠加 的布局组件&#xff0c;相当传统View中的 FrameLayout Box 组件的参数说明 Composable inline fun Box(modifier: Modifier Modifier, …

Web服务器之Tomcat

文章目录 Web 服务器软件简介资源分类访问流程常见的Web服务器软件 Tomcat简介使用步骤使用Tomcat注意事项部署项目的方式方式一方式二方式三 问题中文乱码黑窗口一闪而过启动报错 Web 服务器软件 简介 服务器&#xff1a;安装了服务器软件的计算机服务器软件&#xff1a;接收…

漏洞原理远程命令执行

漏洞原理远程命令/代码执行 远程命令执行函数&#xff08;Remote Command Execution Function&#xff09;是指在一个网络环境中&#xff0c;通过远程执行命令来控制另一个计算机系统或设备的功能。 远程命令执行函数可以通过网络协议&#xff08;如SSH、Telnet、RPC等&#x…

伊恩·斯图尔特《改变世界的17个方程》毕达哥拉斯定理笔记

它告诉我们什么&#xff1f; 直角三角形的三个边之间有什么关系。 为什么重要&#xff1f; 它提供了几何和代数之间的重要联系&#xff0c;使我们能够根据坐标计算距离。它也催生出了三角学。 它带来了什么&#xff1f; 测绘、导航&#xff0c;以及较近代出现的狭义和广义相对论…

第一节课,用户管理--后端初始化,项目调通。二次翻工2

一、网址来源&#xff1a; 快速开始 | MyBatis-Plus (baomidou.com) 进程&#xff1a; ​ 二、[此处不看]添加测试类&#xff0c;看下效果 2.1 参考 一、第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通-CSDN博客 ​ 2.2 新建 SampleTest ​ 2.3 复…