(Relax 快速幂取模1.4)POJ 3641 Pseudoprime numbers(快速幂取模+大素数MillerRabin模板题)
来源:互联网 发布:天猫淘宝网商城首页 编辑:程序博客网 时间:2024/06/11 10:21
题目大意是这样的,输入p,a,两个数如果p是素数输出no,如果p不是素数,判断a^p%p==a是否成立,如果成立输出yes,否则输出no
/* * POJ_3641.cpp * * Created on: 2013年11月19日 * Author: Administrator */#include <iostream>#include <cstdio>using namespace std;typedef long long ll;/** * 快速幂取模 * 求a^b%m的值 */ll qpow(ll a, ll b, ll m) {ll ans = 1;while (b) {if (b & 1) {ans *= a;ans %= m;}a *= a;a %= m;b >>= 1;}return ans;}bool MillerRabinTest(ll x,ll n){//以x为底,判定n是否可能为素数ll y = n-1;while(!(y&1)){y >>= 1;}x = qpow(x,y,n);while(y < n-1 && x != 1 && x != n-1){x = (x*x)%n;y <<= (ll)1;}return x == (n-1) || (y&1) == 1;}bool isPrime(ll n){//判断32为内的整数n是否为素数if(n == 2 || n == 7 || n == 61){//如n为2、7、61,,则n为素数return true;}if(n == 1 || (n&1) == 0){//若n是1||n是非2偶数,则是合数return false;}return MillerRabinTest(2,n) && MillerRabinTest(7,n) && MillerRabinTest(61,n);}//以上是MillerRabin的算法模板,它用来测试大素数int main(){ll p,a;while(scanf("%lld%lld",&p,&a)!=EOF,p||a){if(isPrime(p)){printf("no\n");continue;}if(qpow(a,p,p) == a){printf("yes\n");}else{printf("no\n");}}return 0;}
- (Relax 快速幂取模1.4)POJ 3641 Pseudoprime numbers(快速幂取模+大素数MillerRabin模板题)
- poj 3641 Pseudoprime numbers 快速幂+素数判定 模板题
- POJ 3641 Pseudoprime numbers(快速幂+素数)
- POJ 3641 Pseudoprime numbers【素数+快速幂】
- POJ 3641 Pseudoprime numbers (快速幂取模)
- poj.3641 Pseudoprime numbers【快速幂取模】 20141127
- poj 3641 Pseudoprime numbers 快速幂取模
- POJ Pseudoprime numbers (判断素数+快速幂取模)
- POJ 3641 Pseudoprime numbers (伪素数_快速幂)
- POJ - 3641 Pseudoprime numbers <快速幂加素数判定>
- 【POJ】-3641-Pseudoprime numbers(快速幂,大数素数判定)
- POJ 3641 Pseudoprime numbers(快速幂,素数)
- (Relax 快速幂取模1.3)POJ 1995 Raising Modulo Numbers(快速幂取模模板题+同余模公式)
- PKU 3641 Pseudoprime numbers 快速模取幂 素数
- 快速幂取模 素数测试 HDU 1905 Pseudoprime numbers
- Pseudoprime numbers(快速幂取模)
- poj 3641 Pseudoprime numbers 【快速幂】
- POJ 3641 - Pseudoprime numbers(快速幂)
- CSS制作表格相邻两行不同背景色
- c/c++ 多态的概念
- 在 windows 下的快速搭建 emacs
- 19.C++ 析构函数
- myeclipse的内存管理设置
- (Relax 快速幂取模1.4)POJ 3641 Pseudoprime numbers(快速幂取模+大素数MillerRabin模板题)
- NSDate
- Struts总结
- django 模板标签
- 最大最小堆
- 在手机中设置静态IP的方法
- 使用Tiled地图及利用地图设置坐标
- Linux权限处理命令
- md5