【hdu】 Pseudoprime numbers 伪素数(快速幂+判定素数)
2012-08-16 15:26
423 查看
Pseudoprime numbers
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)Total Submission(s) : 5 Accepted Submission(s) : 3
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
Input contains several test cases followed by a line containing "0 0". Each test case consists of a line containing
p and a.
[align=left]Output[/align]
For each test case, output "yes" if p is a base-a pseudoprime; otherwise output "no".
[align=left]Sample Input[/align]
3 2
10 3
341 2
341 3
1105 2
1105 3
0 0
[align=left]Sample Output[/align]
no
no
yes
no
yes
yes
[align=left]Source[/align]
PKU
// 8.16.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #define LL long long using namespace std ; bool isPrime(int a) { for(int i=2;i*i<=a;i++) if(a%i==0) return false; return true; } LL f(LL a,LL b,LL c) { LL k=1; while(b>=1) { if(b&1) k=k*a%c; a=a*a%c; b>>=1; } return k; } int main() { LL p,a; while(scanf("%lld%lld",&p,&a),(p||a)) { LL res=f(a,p,p); if(res==a%p&&!isPrime(p))puts("yes"); else puts("no"); } return 0; }
相关文章推荐
- hdu 1905 poj3641素数判定与快速幂取余
- HDU 2012 素数判定
- hdu_2012素数判定
- hdu 2012 素数判定
- hdu 2012 素数的判定
- Pseudoprime numbers poj3641(快速幂+素数判定)
- HDU 2012 素数判定(数论)
- HDU 2012 素数判定
- HDU 1905 Pseudoprime numbers【素数】【快速幂】
- HDU 2012 素数判定
- hdu 4715 Difference Between Primes【筛法快速求素数表+思维】
- E - 素数判定 HDU - 2012
- HDU 2012 素数判定
- HDU 2012 素数判定 (Java)
- MillerRabin 快速的素数概率判定法
- hdu-素数判定
- HDU 2012素数判定(素数打表)
- HDU 2012 素数判定 解题报告
- POJ - 3641 Pseudoprime numbers <快速幂加素数判定>
- Hdu 2012 素数判定