首页 > 编程语言 >Miller_Rabin算法快速判断大数是否为素数

Miller_Rabin算法快速判断大数是否为素数

时间:2023-07-08 21:46:01浏览次数:59  
标签:大数 pmod Miller ll 素数 xx ans mod Rabin

Miller_Rabin算法快速判断大数是否为素数

并不是绝对,这只是一种判断大概率为素数的方法

首先根据费马小定理有:\(a^{p-1}=1\pmod p(a不为p的倍数且p不是素数)\)

又因为\(p\)为素奇数,所以\(p-1\)为偶数,表示为\(p-1=2^dm\)

所以有\(a^{p-1}-1=0\pmod p\)

\(a^{2^dm}-1=0\pmod p\)

\((a^{2^{d-1}m}-1)(a^{2^{d-1}m}+1)=0\pmod p\)

从而有\(a^{2^{d-1}m}=1\pmod p||a^{2^{d-1}}=p-1\pmod p\)

以此类推有\(a^m,a^{2m},a^{2^2m}...a^{p-1}\)

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
ll qpow(ll x,ll y,ll mod){
	__int128 ans = 1,xx = x;
	while(y){
		if(y&1) ans=(ans*xx)%mod;
		xx = (xx*xx) % mod;
		y>>=1;
	}
	return ans;
}
bool f(ll x){
	if(x == 2) return 1;
	if(x < 2 || x % 2 == 0) return 0;
	ll tem = x-1,d = 0;
	while(tem % 2 == 0){
		tem/=2;
		d++;
	}
	bool ff = 1;
	for(int i = 1;i <= 20;i++){
		ll a = rand()%(x-1) + 1;
		__int128 xx = qpow(a,tem,x);
		if(xx == 1 || xx == x - 1) continue;
		int j;
		for(j = 1;j <= d;j++){
			xx = (xx*xx)%x;
			if(xx == x - 1)
				break;
		}
		if(j == d + 1)
			ff = 0;
	}
	return ff;
}
int main()
{
	ll x;
	while(~scanf("%lld",&x)){
		if(f(x))
			cout << 'Y' << endl;
		else
			cout << 'N' << endl;
	}
}

标签:大数,pmod,Miller,ll,素数,xx,ans,mod,Rabin
From: https://www.cnblogs.com/xxcdsg/p/17537927.html

相关文章

  • 实验一:通过界面监控大数据平台运行状态
    实验一:通过界面监控大数据平台运行状态1.实验任务一:通过界面查看大数据平台状态通过大数据平台Hadoop的用户界面可以查看平台的计算资源和存储资源。打开http://master:8088/cluster/nodes页面,可以查看大数据平台的状态汇总信息.2.实验任务二:通过界面查看Hadoop状态大......
  • 大数据平台及组件安装部署
    大数据平台及组件安装部署实验一:Hadoop全分布部署实验任务一:Hadoop集群验证分布式集群搭建完成后,根据Hadoop两大核心组成,可以通过监测这HDFS分布式文件系统和MapReduce来完成监测工作,通过以下步骤完成Hadoop集群测试:(1)初始化集群,使用Hadoop命令启动集群。(2)使......
  • 面试题 16.07. 最大数值 ——一种基于乘法和位运算的解题思路
    剧透警告,没写过的勿触题目:编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。qwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqqwqq......
  • 如何实现基于kubernetes安装和运维大数据集群的具体操作步骤
    基于Kubernetes安装和运维大数据集群介绍Kubernetes是一个开源的容器编排平台,可以帮助我们管理和运行容器化的应用程序。它提供了许多强大的功能,使得在大数据环境中安装和运维大数据集群变得更加容易。在本文中,我们将介绍如何使用Kubernetes来安装和运维一个大数据集群。我们将......
  • 大数据集群启动,关闭命令
    集群开启,关闭命令hadoop:开启:dfs:start-dfs.sh;yarn:start-yarn.sh关闭:dfs:stop-dfs.sh;yarn:stop-dfs.shspark:开启:sbin/start-all.sh关闭:sbin/stop-all.shhive:开启:hive关闭:quit;hbase:开启:bin/start-hbase.sh关闭:bin/stop-hbase.shzooker:开启:bin/zkServer.shstart关......
  • 企业大数据分析工具有哪些呢?
    大数据通常被定义为具备五个特点的数据资料。这些特点包括数据规模巨大、处理速度快、包含多种类型、价值密度较低以及具备真实性。由于这种数据超出了传统数据处理软件的能力,所以需要借助新的工具,也就是大数据分析工具来进行处理。那么,迄今为止,我们常用的大数据分析工具有哪些?根据......
  • 代理IP,如何助力大数据时代
    代理IP,如何为大数据助力华科云商助力大数据近年来,我国互联网商业保持持续发展的状态。大环境的优化,各项相关政策的出台,也为互联网经济的发展,提供了强有力的支持。大大小小的企业都想乘风起势,大展宏图,积极推动各项数据业务的进程,提前占领市场先机。对于企业而言,想要推动业务快速地发......
  • sqlsugar 使用汇总 (大数据写入、更新,大数据更新 ORM, db.Fastest文档)
     https://www.donet5.com/Home/Doc?typeId=2404  大数据写入、更新,大数据更新ORM,db.Fastest文档//插入100万10秒不到db.Fastest<RealmAuctionDatum>().BulkCopy(GetList());//性能比现有任何Bulkcopy都要快30%//如果数据库现有数据比较多出现比较慢,这个时候可以试试......
  • 客快物流大数据项目学习框架学习框架的重要性我是怎么坚持学习的怎么确定学习目标
    文章目录客快物流大数据项目学习框架前言一、项目简介二、功能介绍三、项目背景四、服务器资源规划五、技术亮点及价值六、智慧物流大数据平台客快物流大数据项目学习框架前言利用框架的力量,看懂游戏规则,才是入行的前提大多数人不懂,不会,不做,才是你的机会,你得行动,不能畏首畏尾选择才......
  • 大数据解决什么问题 ?
    大数据解决什么问题?几乎所有的教程都会告诉你,大数据解决了TB以及PB级别数据存储与运算的问题,但是如果仅仅这么解释很难说这是根本原因,因为我们有理由相信一个技术的兴起必定是解决了此前技术的一些痛点,在微服务中,大数据量解决方案可以分为如下几个方面:业务层:根据业务场景对数......