HDU 1905 Pseudoprime numbers (快速幂求余)
2016-02-28 20:27
423 查看
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 210 3
341 2
341 3
1105 2
1105 3
0 0
Sample Output
nono
yes
no
yes
yes
快速幂求余,原理我没看懂,只能当模板用了~
#include <iostream> using namespace std; bool isprime(long long a) { for(long long i = 2; i * i <= a; i++) { if (a % i == 0) return false; } return true; } long long qmod(long long a, long long r, long long m) { long long res = 1; while (r) { if (r & 1) res = res * a % m; a = a * a % m; r >>= 1; } return res; } int main() { long long p, a; while (scanf("%I64d%I64d", &p, &a) && p && a) { if (!isprime(p) && qmod(a, p, p) == a) printf("yes\n"); else printf("no\n"); } return 0; }
相关文章推荐
- Docker 搭建私有仓库
- 无法打开lib文件的解决方法
- Hadoop 1.x 启动脚本分析
- Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
- Linux精讲——usermod命令
- OpenStack快速安装
- Linux入门(三)文件权限
- CentOS中设置系统级代理
- linux 根目录扩容
- Hadoop 1.x五大服务与配置文件的关系
- alarm()闹钟函数
- sso单点登录系统架构
- “笨办法学python”学习笔记-在终端powershell中对目录进行简单的编辑(一)
- [MEMO] Linux Kernel Debugging Training 琐碎(补充ing)
- MyEclipse 启动 tomcate 失败 解决方法
- Linux内核分析——x86汇编基础
- linux系统资源监控实践
- 在linux上安装NumPy,Matplotlib,SciPy和IPython
- nginx负载均衡upstream参数配置
- VMware虚拟机中扩大Linux硬盘空间