Hdoj 1905.Pseudoprime numbers 题解
Problem Description
Fermat's theorem states that for any prime number p and for any integer a > 1, a^p == 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 ≤ 1,000,000,000 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 2
10 3
341 2
341 3
1105 2
1105 3
0 0
Sample Output
no
no
yes
no
yes
yes
Author
Gordon V. Cormack
Source
思路
就是判断\(a^p\%p==a\),计算\(a^p\)可以用快速幂的方法,快速幂本质也是二分不断加速
代码
#include<bits/stdc++.h>
using namespace std;
typedef __int64 ll;
bool isprime(ll x)
{
for(int i=2;i<sqrt(x);i++)
if(x%i==0)
return false;
return true;
}//判断是否为质数
ll quickpower(ll a,ll b,ll c)
{
ll ans =1;
while(b)
{
if(b&1)
ans = (ans*a) % c;
a = (a*a) % c;
b >>= 1;
}
return ans;
}//返回a^b%c的结果
int main()
{
int a,p;
while(cin>>p>>a)
{
if(p==0 && a==0) break;
if(isprime(p))
cout << "no" << endl;
else
{
int ans_power = quickpower(a,p,p);
if(ans_power==a)
cout << "yes" << endl;
else
cout << "no" << endl;
}
}
return 0;
}
Hdoj 1905.Pseudoprime numbers 题解的更多相关文章
- Hdoj 1058.Humble Numbers 题解
Problem Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The ...
- hdu 1905 Pseudoprime numbers
#include<stdio.h> #include<math.h> #define ll long long ll mod; bool Judge(int x) { ;i&l ...
- HDU 3641 Pseudoprime numbers(快速幂)
Pseudoprime numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11336 Accepted: 4 ...
- 找规律/数位DP HDOJ 4722 Good Numbers
题目传送门 /* 找规律/数位DP:我做的时候差一点做出来了,只是不知道最后的 is_one () http://www.cnblogs.com/crazyapple/p/3315436.html 数 ...
- poj 3641 Pseudoprime numbers
题目连接 http://poj.org/problem?id=3641 Pseudoprime numbers Description Fermat's theorem states that for ...
- POJ3641 Pseudoprime numbers(快速幂+素数判断)
POJ3641 Pseudoprime numbers p是Pseudoprime numbers的条件: p是合数,(p^a)%p=a;所以首先要进行素数判断,再快速幂. 此题是大白P122 Car ...
- poj Pseudoprime numbers 3641
Pseudoprime numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10903 Accepted: 4 ...
- 【POJ - 3641】Pseudoprime numbers (快速幂)
Pseudoprime numbers Descriptions 费马定理指出,对于任意的素数 p 和任意的整数 a > 1,满足 ap = a (mod p) .也就是说,a的 p 次幂除以 ...
- poj 3641 Pseudoprime numbers 快速幂+素数判定 模板题
Pseudoprime numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7954 Accepted: 3305 D ...
随机推荐
- Selling Souvenirs CodeForces - 808E (分类排序后DP+贪心)
E. Selling Souvenirs time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- 亲测可以永久破解2018版本的pycharm
pycharm是很强大的开发工具,但是每次注册着实让人头疼.网络上很多注册码.注册服务器等等.但都只是一年或者不能用:为次有如下解决方案.亲测有效!!! 如果想让pycharm永久被激活,比如截止日到 ...
- 钢琴培训班课程、课时及费用管理系统已提供ACM3.0新版下载
中小型艺术培训班课程.课时及费用管理系统. 2014新版 ACM3测试版下载:http://www.cnblogs.com/Charltsing/p/ACM3.html 您有任何功能需求,欢迎QQ 5 ...
- PlainElastic.Net
PlainElastic.Net PlainElastic.Net The really plain Elastic Search .Net client. Idea Installation How ...
- 【学习总结】Git学习-参考廖雪峰老师教程十-自定义Git
学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...
- Linux系统mysql使用(二)
一.查看某数据库的表 # 假设此时数据库名为hiveuse hive; show tables;
- 转:VIM选择文本块/复制/粘贴
VIM选择文本块/复制/粘贴 - lcj_cjfykx的专栏 - CSDN博客https://blog.csdn.net/lcj_cjfykx/article/details/9091569
- telnet总结
telnet是经常使用的客户端链接工具,总结一下常用的telnet的使用方法 1) 连接 telnet //链接swoole 2)退出当前连接 ctrl + ] 回车 3)查看常用的一些命令 ? 回车 ...
- Python3练习题 011:成绩打分
# print('-----判断输入值和60大小判断')# b=int(input('input num'))# if b >60:# print('良')# elif b==60:# prin ...
- js-跨域源资源共享(CORS)
### 一. CORS(Cross-Origin Resource Sharing,跨域源资源共享) 基本思想:使用自定义HTTP头部让浏览器与服务器进行沟通 发送请求时,需附加一个Origin头部 ...