POJ 3641 Pseudoprime numbers (伪素数_快速幂)
来源:互联网 发布:国外电脑网络加速器 编辑:程序博客网 时间:2024/05/16 19:16
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
#include<iostream>#include<cstdio>using namespace std;typedef long long ll;bool is_prime(int x){int i,j;for(i=2;i*i<=x;i++) if(x%i==0) return false;return true;}ll mod_pow(ll x,ll n,ll mod){ll res=1;while(n>0) {if(n&1) res=res*x%mod;x=x*x%mod;n>>=1;}return res;}int main(){int a,p,i,j;while(cin>>p>>a) {if(p==0 && a==0) break;if(is_prime(p)) {printf("no\n");continue;}if(mod_pow(a,p,p)==a) printf("yes\n");else printf("no\n");}return 0;}
- POJ 3641 Pseudoprime numbers (伪素数_快速幂)
- POJ 3641 Pseudoprime numbers(快速幂+素数)
- POJ 3641 Pseudoprime numbers【素数+快速幂】
- 【hdu】 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 (快速幂)
- POJ:3641 Pseudoprime numbers(快速幂)
- POJ 3641 Pseudoprime numbers (快速幂)
- POJ-3641 Pseudoprime numbers(快速幂)
- PO3641 Pseudoprime numbers判伪素数与快速幂
- POJ 3641 Pseudoprime numbers 测试费马小定理伪素数
- Javascript解析JSON 输出为bootstrip可用的特定格式的数据
- 机器学习常见算法
- 关于Tomcat的一些记录
- c++打印*组成的任意等腰三角形
- 跨域的几种方式
- POJ 3641 Pseudoprime numbers (伪素数_快速幂)
- 自定义的布局文件
- hdu2795Billboard【线段树】
- 数据库的事务处理
- Oracle-常用监控SQL
- IL中间语言理解学习001-Add加法解析
- leetcode:Remove Nth Node From End of List
- Remove advertisement of Storm 5
- POJ 3693 Maximum repetition substring(好题)