ACM一道关于素数查找的题
在ACM做这么一道题:
我用了最简单的查找素数的方法:
bool isPrime(int n)
{
int t=n-1; while(t>2)
{
if(n%t==0)
{
return false;
}
t--;
}
return true;
}
结果正确,却超时了,后来发现当变量是一个大数的时候这种查找效率极低,于是就在网站各种搜索快速的判断素数的算法
Miller Rabin算法:
typedef unsigned __int64 llong; llong mod_pro(llong x,llong y,llong n)
{
llong ret=0,tmp=x%n;
while(y)
{
if(y&0x1)if((ret+=tmp)>n)ret-=n;
if((tmp<<=1)>n)tmp-=n;
y>>=1;
}
return ret;
}
llong mod(llong a,llong b,llong c)
{
llong ret=1;
while(b)
{
if(b&0x1)ret=mod_pro(ret,a,c);
a=mod_pro(a,a,c);
b>>=1;
}
return ret;
}
llong ran()
{
llong ret=rand();
return ret*rand();
}
bool isPrime2(llong n)
{
int t=2;
if(n<2)return false;
if(n==2)return true;
if(!(n&0x1))return false;
llong k=0,m,a,i;
for(m=n-1;!(m&1);m>>=1,k++);
while(t--)
{
a=mod(ran()%(n-2)+2,m,n);
if(a!=1)
{
for(i=0;i<k&&a!=n-1;i++)
a=mod_pro(a,a,n); if(i>=k)return false;
}
}
return true;
}
对比一下速度:
我的
Miller Rabin算法:
ACM一道关于素数查找的题的更多相关文章
- 一道很经典的 BFS 题
		
一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...
 - 『ACM C++』PTA浙大 | 基础题 - Have Fun with Numbers
		
连着这两道都是开学前数构老师的“爱心作业”,还没上课开学就给我们布置作业了,这道题有点小坑,也经常遇到类似的问题,特地拿出来记录一下. -------------------------------- ...
 - 集训第四周(高效算法设计)N题 (二分查找优化题)
		
原题:poj3061 题意:给你一个数s,再给出一个数组,要求你从中选出m个连续的数,m越小越好,且这m个数之和不小于s 这是一个二分查找优化题,那么区间是什么呢?当然是从1到数组长度了.比如数组长度 ...
 - ACM_一道耗时间的水题
		
一道耗时间的水题 Time Limit: 2000/1000ms (Java/Others) Problem Description: Do you know how to read the phon ...
 - 【图灵杯 F】一道简单的递推题(矩阵快速幂,乘法模板)
		
Description 存在如下递推式: F(n+1)=A1*F(n)+A2*F(n-1)+-+An*F(1) F(n+2)=A1*F(n+1)+A2*F(n)+-+An*F(2) - 求第K项的值对 ...
 - 一道有趣的for循环题
		
一道有趣的for循环题 今天在复习js基础知识时发现了一个for循环的题,第一眼看到直接懵逼了,没想到for循环竟然还可以这样玩?涨姿势了. 题目是这样的 for(i=0, j=0; i<10, ...
 - 离散-ACM一道强有力的工具
		
最近几天散搞哭了,都怪以前看到没好好学... 就拿一道题来说事PKU:1151,以前Matrix67写过这道题的BLOG,引用一下: VOJ1056(http://www.vijos.cn/Probl ...
 - Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)
		
Crack Mathmen TimeLimit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Since mathmen take security ...
 - C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)
		
今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1.要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证:2.要可以对员工信 ...
 
随机推荐
- matlab中的字符串数组与函数调用
			
1, matlab中的字符串就是1维字符数组,即如: a = 'dddssd'; b = 'lsde'; c = [a, b]; 当然也可以: c= strcat(a, b); 2, matlab中的 ...
 - HTTPS 升级指南
			
上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我 ...
 - Gym 100507A  About Grisha N. (水题)
			
About Grisha N. 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/A Description Grisha N. t ...
 - JSF 2.0 + Ajax hello world example
			
In JSF 2.0, coding Ajax is just like coding a normal HTML tag, it's extremely easy. In this tutorial ...
 - MySQL Update语句用法
			
用一个表的某列值更新另外一个表的某列值的sql语句: update tableA a innner join tableB b on a.column_1 = b.column_1 set a.col ...
 - MySQL select into outfile用法
			
select into outfile用法 SELECT ... FROM TABLE_A INTO OUTFILE "/path/to/file" FIELDS TERMINAT ...
 - Java中的Filter过滤器
			
Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件 ...
 - 关于 jquery cookie的用法
			
东钿微信公众平台新版上线 需要一个引导用户操作步骤.设置一个cookie师傅偶第一次访问此页面 .如果是则跳出用户引导,如果不是,正常显示. 一开始在百度了一段jquery cookie插件,也没仔细 ...
 - C#中的where从句
			
C#中的where从句 2011-07-03 13:07OrphousV | 分类:C#/.NET | 浏览8443次 能解释一下下面两段代码中where的作用吗?using System;publi ...
 - 根据powerdesigner的OO模型生成C#代码
			
2007-05-15 08:34:11| 分类: 转贴部分 | 标签:学习帖子 |字号 订阅 习惯了用Powerdesigner设计数据库模型,XDE设计类图.因此我一般的设计方法是用PD做分析模 ...