[POJ3641] 伪素数
来源:互联网 发布:易建联伦敦奥运会数据 编辑:程序博客网 时间:2024/06/16 20:09
题目描述
根据以a为基的伪素数的定义,判断p是否是以a为基的伪素数。(2 < p ≤ 1000000000 and 1 < a < p )
输入格式
输入数据有多组,每组数据占一行,包含两个整数p和a,输入以“0 0”结束。
输出格式
如果p是以a为基的伪素数,则输出“yes”,否则输出“no”。
样例数据
样例输入
3 2
10 3
341 2
341 3
1105 2
1105 3
0 0
样例输出
no
no
yes
no
yes
yes
题目分析
Miller_Rabin的前奏,这题没什么意义
a为底伪素数定义:p不是素数且a^p≡a (mod p)。
源代码
#include<algorithm>#include<iostream>#include<iomanip>#include<cstring>#include<cstdlib>#include<vector>#include<cstdio>#include<cmath>#include<queue>using namespace std;inline const long long Get_Int() { long long num=0,bj=1; char x=getchar(); while(x<'0'||x>'9') { if(x=='-')bj=-1; x=getchar(); } while(x>='0'&&x<='9') { num=num*10+x-'0'; x=getchar(); } return num*bj;}bool Check_Prime(long long n) { //判断n是否是素数 if(n==0||n==1)return false; for(long long i=2; i<=sqrt(n); i++) if(n%i==0)return false; return true;}long long Quick_Pow(long long a,long long b,long long mod) { long long ans=1; while(b>0) { if(b&1)ans=ans*a%mod; b>>=1; a=a*a%mod; } return ans;}int main() {//伪素数:p不是素数且a^p≡a (mod p)。 while(true) { long long p=Get_Int(),a=Get_Int(); if(p==0&&a==0)break; if(Check_Prime(p))puts("no"); else { if(Quick_Pow(a,p,p)==a)puts("yes"); else puts("no"); } } return 0;}
0 0
- [POJ3641] 伪素数
- poj3641
- poj3641
- poj3641
- poj3641
- poj3641
- POJ3641
- poj3641
- poj3641
- POJ3641 Pseudoprime numbers 素数测试的应用
- Pseudoprime numbers poj3641(快速幂+素数判定)
- poj3641 简单数论 快速幂 取模,素数
- POJ3641 UVA11287 HDU1905 Pseudoprime numbers【素数判定+快速模幂】
- HDU 1905 伪素数
- 经典的判断伪素数
- POJ 3641 Pseudoprime numbers 伪素数测试
- POJ 3641 Pseudoprime numbers(伪素数)
- poj 3641&hdu 1905(伪素数判定)
- 计算机操作系统 LRU算法 缺页中断
- ajax 请求进入到error
- MySQL带参数的存储过程小例子
- iosApp上线流程
- iOS 开发仿网易云音乐歌词海报
- [POJ3641] 伪素数
- JSP编程中遇到问题
- Android应用界面布局
- Tanks联机版服务端开发
- Linux常用命令
- 模拟服务器MockServer之Moco详细介绍
- CyclicBarrier(同步器)
- 判断图像中的三角形,圆形和矩形
- MySQL 控制台基本语句