poj3641
来源:互联网 发布:淘宝网图标图片大全 编辑:程序博客网 时间:2024/05/18 12:40
Description
Fermat's theorem states that for any prime number p and for any integera > 1, ap = a (mod p). That is, if we raisea to the pth power and divide by p, the remainder isa. Some (but not very many) non-prime values of p, known as base-apseudoprimes, have this property for some a. (And some, known as Carmichael Numbers, are base-a pseudoprimes for alla.)
Given 2 < p ≤ 1000000000 and 1 < a < p, determine whether or notp 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 containingp 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
#include<iostream>#include<cmath>//#define LL long longtypedef long long LL;using namespace std;int prime(LL x){ if(x==2){return 1;} if(x<=1 || x%2==0){return 0;} LL j=3; while(j<=(LL)sqrt(double(x))){ if(x%j==0){return 0;} j=j+2; } return 1; } LL modular(LL a, LL r, LL m){ LL d=1,t=a; while(r>0){ if(r%2==1){d=d*t%m;} r=r/2; t=t*t%m; } return d; } int main(){ LL p,a; while(/*cin>>p>>a*/scanf("%I64d%I64d",&p,&a)){ if(p==0&&a==0){break;} if(prime(p)==1){printf("no\n");} else{ if(modular(a,p,p)==a){printf("yes\n");}else{printf("no\n");} } } return 0; }
- poj3641
- poj3641
- poj3641
- poj3641
- poj3641
- POJ3641
- poj3641
- poj3641
- hdu1905||poj3641 Pseudoprime numbers
- POJ3641 Pseudoprime numbers
- POJ3641:Pseudoprime numbers
- 快速幂-poj3641
- poj3641(快速幂取模)
- POJ3641 快速幂
- POJ3641-Pseudoprime numbers
- [POJ3641] 伪素数
- poj3641(KMP求子串重复次数)
- POJ3641 Pseudoprime numbers 快速幂
- PAT_乙级1016
- Poj1845
- eclipse中查找文件
- java日志记录的5条规则
- EMR、EHR和PHR的定义与对比
- poj3641
- 类加载
- 非行内元素与行内元素转换的几种方法
- 今天在学习C语言循环时遇到的问题
- git工具使用
- 成为优秀程序员的十条黄金法则
- Eclipse打开Package Explorer
- centos7/rhel7设置笔记本触摸版
- 最短路径floyd算法