在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一道关于素数查找的题的更多相关文章

  1. 一道很经典的 BFS 题

    一道很经典的 BFS 题 想认真的写篇题解. 题目来自:https://www.luogu.org/problemnew/show/P1126 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运 ...

  2. 『ACM C++』PTA浙大 | 基础题 - Have Fun with Numbers

    连着这两道都是开学前数构老师的“爱心作业”,还没上课开学就给我们布置作业了,这道题有点小坑,也经常遇到类似的问题,特地拿出来记录一下. -------------------------------- ...

  3. 集训第四周(高效算法设计)N题 (二分查找优化题)

    原题:poj3061 题意:给你一个数s,再给出一个数组,要求你从中选出m个连续的数,m越小越好,且这m个数之和不小于s 这是一个二分查找优化题,那么区间是什么呢?当然是从1到数组长度了.比如数组长度 ...

  4. ACM_一道耗时间的水题

    一道耗时间的水题 Time Limit: 2000/1000ms (Java/Others) Problem Description: Do you know how to read the phon ...

  5. 【图灵杯 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项的值对 ...

  6. 一道有趣的for循环题

    一道有趣的for循环题 今天在复习js基础知识时发现了一个for循环的题,第一眼看到直接懵逼了,没想到for循环竟然还可以这样玩?涨姿势了. 题目是这样的 for(i=0, j=0; i<10, ...

  7. 离散-ACM一道强有力的工具

    最近几天散搞哭了,都怪以前看到没好好学... 就拿一道题来说事PKU:1151,以前Matrix67写过这道题的BLOG,引用一下: VOJ1056(http://www.vijos.cn/Probl ...

  8. Sdut 2165 Crack Mathmen(数论)(山东省ACM第二届省赛E 题)

    Crack Mathmen TimeLimit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Since mathmen take security ...

  9. C#中一道关于员工信息系统的题(主要考察LinQ和正则表达式验证)

    今天上午进行了公司的C# C level考核,最后一道编程题是关于员工信息系统的,题目的要求大概是这样的:1.要可以保存员工信息(XXXXX),并且要用正则表达式对输入信息进行验证:2.要可以对员工信 ...

随机推荐

  1. 斜率DP题目

    uva 12524 题意:沿河有n个点,每个点有w的东西,有一艘船从起点出发,沿途可以装运东西和卸载东西,船的容量无限,每次把wi的东西从x运到y的花费为(y-x)*wi; 问把n个点的东西合并成k个 ...

  2. Windows-to-go-带着win10满街跑

    一.前言 有句话是这么说的,程序员对工作是时刻准备着的.无论你是长假还是短假,只要有网,你就躲不开客户.这样子,当你外出的时候你可以选择时刻背着电脑,因为你的电脑有着你顺手的开发工具以及开发环境.我们 ...

  3. 漫谈云计算与SOA (1)

    SOA是什么? 英语直译是基于服务的架构,就是一种技术框架,促使企业内部与外部所有相关的系统公开和访问定义良好的服务和绑定于服务的信息,进一步抽象成流程层和组合应用,从而构成解决方案. 说人话:重用服 ...

  4. 访问修饰符与可选修饰符static的使用

    在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内 ...

  5. Node.js:实现知乎(www.zhihu.com)模拟登陆,获取用户关注主题

    前一段时间,在瞎看看 Node.js,便研究通过 Node.js 实现知乎模拟登陆.相信,有很多网站有登陆权限设置,如若用户未登陆,将会跳转至首页提醒用户登陆,无法浏览部分页面. 如若是 b/s 架构 ...

  6. 【MyLocations】标记位置App开发体会

    实现功能: 1.能通过Cora Location获取地址信息 2.用户获取地址信息后能编辑相关信息 3.使用Core Data保存数据 4.使用MapKit,在Map上显示标记的位置,并可以编辑位置信 ...

  7. PostgreSQL的 initdb 源代码分析之二

    继续分析 下面这一段,当 initdb --version 或者  initdb --help 才有意义. ) { ], || strcmp(argv[], ) { usage(progname); ...

  8. 网络编程中常见地址结构与转换(IPv4/IPv6)

    1. sockaddr/sockaddr_in/in_addr (IPv4).sockaddr6_in/in6_addr/addrinfo (IPv6) struct sockaddr { unsig ...

  9. python写的多线程下载工具

    其实只是想练习一下threading的用法. 写完后发现其实下载速度也没增加多少,略显尴尬,汗 # -*- coding: cp936 -*- import urllib2 import thread ...

  10. httpclient发送request请求时设置header和timeout

    package com.xxx.xxx.common; import java.io.BufferedReader; import java.io.InputStreamReader; import ...