hdu 2012 素数判定 Miller_Rabbin
素数判定
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 71785 Accepted Submission(s): 24969
0 0
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
/*
米勒-拉宾素数判定:
1.求出s和R 使得N-1 = 2^s * R
2.选出[1,N-1]的整数a (最好是质数)
3.检验(a^d) mod N != 1且r从0到(s-1): (a^(2^r*s)) mod N != -1则N是合数
4.如果不是合数有 75%概率是质数
*/
int pow_mod(int x,int y,int mod)
{
int ret=;
while (y)
{
if (y&)ret=ret*x%mod;
x=x*x%mod;
y>>=;
}
return ret;
}
bool Miller_Rabbin(int n,int a)//a属于[2,n-1]
{
if (n<)return false;
if (!(n%a))
return false;
int r=,s=n-;
while (!(s&))
{
s>>=;
r++;
}
//将n-1分解为2^r * s s为奇数
int k=pow_mod(a,s,n);
if (k==)return true;
//如果a^s%n==1 为伪素数
for (int i=;i<r;i++)
{
if (k==n-)return true;
//对于任意 a^(s*2^i)%n==n-1 为伪素数 i属于[1,r-1]
k=k*k%n;
}
return false;
}
int main()
{
freopen("input.txt","r",stdin);
int x,y,n,t;
while (scanf("%d%d",&x,&y),x!=||y!=)
{
int i;
bool flag=true;
for (i=x;i<=y;i++)
{
t=;
while (t--)
{
n=i*i+i+;
if (!Miller_Rabbin(n,rand()%(n-)+))
{
flag=false;
break;
}
}
if (!flag)break;
}
if (flag)
{
printf("OK\n");
}else
{
printf("Sorry\n");
}
}
}
hdu 2012 素数判定 Miller_Rabbin的更多相关文章
- HDU 2012 素数判定
http://acm.hdu.edu.cn/showproblem.php?pid=2012 Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括 ...
- HDOJ 2012 素数判定
Problem Description 对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x < y<=50),判定该表达式的值是否都为素数. I ...
- hdu 1012 素数判定
这道题~以前判定prime是一个个去试着整除再去存储,上次弄过欧拉函数那题目之后就知道了,这样会更快捷: prime[] = prime[] = ; ; i <maxn; i++) { if(! ...
- hdu 1397 (素数判定)
一开始提交了这个,果断TLE #include <cstdio> #include <iostream> #include <string> #include &l ...
- HDU 2012 FZU 1756关于素数的一些水题
HDU 2012 素数判定 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 多项式求和,素数判定 HDU2011.2012
HDU 2011:多项式求和 Description 多项式的描述如下: 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 现在请你求出该多项式的前n项的和. Input ...
- 数学#素数判定Miller_Rabin+大数因数分解Pollard_rho算法 POJ 1811&2429
素数判定Miller_Rabin算法详解: http://blog.csdn.net/maxichu/article/details/45458569 大数因数分解Pollard_rho算法详解: h ...
- Miler-Rabbin素数判定
前言 素数判定? 小学生都可以打的出来! 直接暴力O(n)O(\sqrt n)O(n)-- 然后就会发现,慢死了-- 于是我们想到了筛法,比如前几天说到的詹欧筛法. 但是线性的时间和空间成了硬伤-- ...
- FZU 1649 Prime number or not米勒拉宾大素数判定方法。
C - Prime number or not Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & % ...
随机推荐
- 【HDU 2014 Multi-University Training Contest 1 1002】/【HDU 4862】Jump
多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作, ...
- 在Windows下使用MinGW静态编译Assimp
使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...
- Android - 封装Fragment不依赖于Activity
封装Fragment不依赖于Activity 本文地址:http://blog.csdn.net/caroline_wendy Fragment直接托管activity的intent会破坏Fragme ...
- HTML里面Textarea换行总结
近期碰到一个数据转来转去转到Textrea里面能否真正按行存放的问题,在这里总结一下: 问题描写叙述: 比方get数据到一个TextArea里面,如“AAA BBB”,想把这段文字在TextAre ...
- sqlServer将多字段设为主键方法
补充一下关于数据库多字段复合主键的设置. 首先一个表是不能有多个主键的.但是可以有多个字段组合成一个主键,这就是为什么有时候表里为什么会有多个字段都有主键的标志,那是因为他们组合成了一个主键了.我们可 ...
- Linux命令之ssh
一. 配置ssh 1. 命令 ssh-keygen [选项] 2. 说明 用于为“ssh”生成.管理和转换认证密钥,它支持RSA和DSA两种认证密钥 3. 选项 -C:添加注释 -f:指定用来保存密钥 ...
- Chapter 4 - How to Fire some Bullets
Now, we want to let the hero fire some bullets to kill the enemies, add the codes below to set the l ...
- Shell变量之自定义变量、环境变量
1:环境变量 环境变量可以帮我们达到很多功能-包括家目录的变换啊.提示字符的显示啊.运行文件搜寻的路径啊等等的那么,既然环境变量有那么多的功能,问一下,目前我的 shell 环境中, 有 ...
- 学习微信小程序之css14浮动的特性
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 31、三层架构、AJAX+FormsAuthentication实现登陆
三层架构 前段时间公司要求修改一个网站,打开后我疯了,一层没有都是调用的DB接口,遍地的SQL语句,非常杂乱. 什么是三层架构? 三层架构是将整个项目划分为三个层次:表现层.业务逻辑层.数据访问层.目 ...