POJ 3641 Pseudoprime numbers(费马小定理,快速幂,数论)
来源:互联网 发布:kord机枪 知乎 编辑:程序博客网 时间:2024/05/17 05:05
Description
Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but not very many) non-prime values of p, known as base-a pseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for all a.)
Given 2 < p ≤ 1000000000 and 1 < a < p, determine whether or not p is a base-a pseudoprime.
Input
Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing p and a.
Output
For each test case, output "yes" if p is a base-a pseudoprime; otherwise output "no".
Sample Input
3 210 3341 2341 31105 21105 30 0
Sample Output
nonoyesnoyesyes
Source
#include<cstdio>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>#define MYDD 1103typedef long long ll;using namespace std;ll MOD(ll x,ll n,ll mod) {ll ans;if(n==0)return 1;ans=MOD(x*x%mod,n/2,mod);//采用递归if(n&1)//用于判断 n 的二进制最低位是否为 1ans=ans*x%mod;return ans;}ll issu(ll x) {//素数的判断if(x<2)return 0;//不是素数:返回 0for(ll j=2; j<=sqrt(x); j++)if(x%j==0)return 0;return 1;}int main() {ll p,a,Q_mod;while(scanf("%lld%lld",&p,&a)&&(p||a)) {if(issu(p)) {puts("no");//如果 p 是素数,直接输出} else {Q_mod=MOD(a,p,p);//快速幂 a^p%p 的结果 if(Q_mod==a) {puts("yes");} elseputs("no");}}return 0;}
- POJ 3641 Pseudoprime numbers(费马小定理,快速幂,数论)
- POJ -3641Pseudoprime numbers(快速幂+同余定理)
- [数论]POJ 3641/HOJ 2700 Pseudoprime numbers 快速幂
- POJ 3641 - Pseudoprime numbers(快速幂)
- Pseudoprime numbers(POJ-3641)(快速幂)
- POJ 3641 Pseudoprime numbers (快速幂)
- POJ:3641 Pseudoprime numbers(快速幂)
- POJ 3641 Pseudoprime numbers (快速幂)
- POJ-3641 Pseudoprime numbers(快速幂)
- poj-3641 Pseudoprime numbers(费马小定理)
- poj 3641 Pseudoprime numbers 【快速幂】
- POJ 3641 Pseudoprime numbers(快速幂+素数)
- POJ 3641 Pseudoprime numbers【素数+快速幂】
- poj-3641-Pseudoprime numbers【快速幂】
- POJ 3641 Pseudoprime numbers 【快速幂】
- poj 3641 Pseudoprime numbers 快速幂算法
- Pseudoprime numbers 【poj-3641】【快速幂】
- [快速幂] POJ-3641 Pseudoprime numbers
- dedecms织梦TAG标签显示每个标签共有多少篇文章的方法
- Mac显示或不显示隐藏文件操作命令
- android仿腾讯小火箭案例
- LeetCode#19 Remove Nth Node From End of List
- android面试专题(6)
- POJ 3641 Pseudoprime numbers(费马小定理,快速幂,数论)
- 使用SurfaceBiew录制视频
- 【打CF,学算法——三星级】CodeForces 701C They Are Everywhere
- Poj 3613 Cow Relays【Floyd+快速幂】
- 2016夏季练习——Prim
- 第一章 银联8583报文解析
- scala 学习笔记4 cache 和persist的区别
- EditText 对手机号码的处理
- AndroidStudio导入项目一直卡在Building gradle project info最快速解决方案