hdu1905||poj3641 Pseudoprime numbers
来源:互联网 发布:iphone ssh 默认端口 编辑:程序博客网 时间:2024/04/29 21:17
题意: 用a^p == a (mod p)两个数来判断 a^p是否是伪素数,若p是素数,输出"no" ,若a^p是伪素数,输出"yes",否则"no"
题解:当p是奇数时 有:( a^p)mod n = ((a % n) *(a ^ (p - 1)) % n) % n;
当p是偶数时:a ^ p = ( a ^ ( p / 2 ) * a^ ( p / 2));
于是这里用分治求解;
/* * File: main.cpp * Author: ssslpk * * Created on August 28, 2012, 8:57 PM */#include <cstdlib>#include<cstdio>#include<math.h>#include<iostream>using namespace std;#define int64 long longint64 mod_mult(int64 a, int64 b, int64 n)//(a*b) mod n{ int64 s = 0; a = a % n; while (b) { if (b & 1)s = (s + a) % n; a <<= 1; a %= n; b >>= 1; } return s;}int64 mod;int64 p, a;int64 mod_exp(int64 p)//(a^p) mod n{ if (p == 1)return a % mod; if (p & 1)return ((a % mod) * mod_exp(p - 1)) % mod; int64 temp = mod_exp(p / 2); return mod_mult(temp, temp, mod);}bool isprime(int64 p) { int64 m = (int64) sqrt((double) p); for (int i = 2; i <= m; i++) { if (p % i == 0)return 0; } return 1;}int main(int argc, char** argv) { while (scanf("%lld%lld", &p, &a), p || a) { mod = p; if (isprime(p)) { printf("no\n"); continue; } if (mod_exp(p) == a)printf("yes\n"); else printf("no\n"); } return 0;}
- hdu1905||poj3641 Pseudoprime numbers
- POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
- HDU1905 Pseudoprime numbers
- hdu1905 Pseudoprime numbers
- HDU1905 Pseudoprime numbers
- HDU1905 Pseudoprime numbers(搜索)
- POJ3641 Pseudoprime numbers
- POJ3641:Pseudoprime numbers
- POJ3641-Pseudoprime numbers
- POJ3641 Pseudoprime numbers 快速幂
- POJ3641 Pseudoprime numbers 【快速幂】
- POJ3641(Pseudoprime numbers 费马小定理)
- Pseudoprime numbers(poj3641)快速幂
- POJ3641 Pseudoprime numbers(快速幂取模)
- POJ3641 Pseudoprime numbers 素数测试的应用
- hdu1905 Pseudoprime numbers (快速幂+素数筛法)
- Pseudoprime numbers poj3641(快速幂+素数判定)
- Pseudoprime numbers
- 适配器模式
- 如何解释 #define FIND(struc, e) (size_t) &(((struc*) 0)->e)
- 如何将android项目打包成apk
- java Class的泛型笔记
- SC Create 创建一个Windows系统服务
- hdu1905||poj3641 Pseudoprime numbers
- struts2+spring的两种整合方式
- 5.每颗类继承树一张表:总结
- XML的add,update.delete,select
- poj 2352(入门线段树)
- 遍历子窗口的函数
- 2012年8月29日 学习总结
- android中The connection to adb is down ,adb server didn't ACK 问题和解决
- LINUX网络编程之设计流程